Commit e4811a27842b4fa0d321d49de1b9d0534d05e455
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
Merge tag 'fbdev-fixes-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux
Pull fbdev fixes from Tomi Valkeinen: - Fix regression with Nokia N900 display - Fix crash on fbdev using freed __initdata logos - Fix fb_deferred_io_fsync() return value. * tag 'fbdev-fixes-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux: OMAPDSS: SDI: fix output port_num video/fbdev: fix defio's fsync video/logo: prevent use of logos after they have been freed OMAPDSS: pll: NULL dereference in error handling OMAPDSS: HDMI: remove double initializer entries
Showing 5 changed files Side-by-side Diff
drivers/video/fbdev/core/fb_defio.c
... | ... | @@ -83,9 +83,10 @@ |
83 | 83 | cancel_delayed_work_sync(&info->deferred_work); |
84 | 84 | |
85 | 85 | /* Run it immediately */ |
86 | - err = schedule_delayed_work(&info->deferred_work, 0); | |
86 | + schedule_delayed_work(&info->deferred_work, 0); | |
87 | 87 | mutex_unlock(&inode->i_mutex); |
88 | - return err; | |
88 | + | |
89 | + return 0; | |
89 | 90 | } |
90 | 91 | EXPORT_SYMBOL_GPL(fb_deferred_io_fsync); |
91 | 92 |
drivers/video/fbdev/omap2/dss/hdmi_pll.c
... | ... | @@ -132,7 +132,6 @@ |
132 | 132 | .mX_max = 127, |
133 | 133 | .fint_min = 500000, |
134 | 134 | .fint_max = 2500000, |
135 | - .clkdco_max = 1800000000, | |
136 | 135 | |
137 | 136 | .clkdco_min = 500000000, |
138 | 137 | .clkdco_low = 1000000000, |
... | ... | @@ -156,7 +155,6 @@ |
156 | 155 | .mX_max = 127, |
157 | 156 | .fint_min = 620000, |
158 | 157 | .fint_max = 2500000, |
159 | - .clkdco_max = 1800000000, | |
160 | 158 | |
161 | 159 | .clkdco_min = 750000000, |
162 | 160 | .clkdco_low = 1500000000, |
drivers/video/fbdev/omap2/dss/pll.c
drivers/video/fbdev/omap2/dss/sdi.c
... | ... | @@ -342,6 +342,8 @@ |
342 | 342 | out->output_type = OMAP_DISPLAY_TYPE_SDI; |
343 | 343 | out->name = "sdi.0"; |
344 | 344 | out->dispc_channel = OMAP_DSS_CHANNEL_LCD; |
345 | + /* We have SDI only on OMAP3, where it's on port 1 */ | |
346 | + out->port_num = 1; | |
345 | 347 | out->ops.sdi = &sdi_ops; |
346 | 348 | out->owner = THIS_MODULE; |
347 | 349 |
drivers/video/logo/logo.c
... | ... | @@ -21,6 +21,21 @@ |
21 | 21 | module_param(nologo, bool, 0); |
22 | 22 | MODULE_PARM_DESC(nologo, "Disables startup logo"); |
23 | 23 | |
24 | +/* | |
25 | + * Logos are located in the initdata, and will be freed in kernel_init. | |
26 | + * Use late_init to mark the logos as freed to prevent any further use. | |
27 | + */ | |
28 | + | |
29 | +static bool logos_freed; | |
30 | + | |
31 | +static int __init fb_logo_late_init(void) | |
32 | +{ | |
33 | + logos_freed = true; | |
34 | + return 0; | |
35 | +} | |
36 | + | |
37 | +late_initcall(fb_logo_late_init); | |
38 | + | |
24 | 39 | /* logo's are marked __initdata. Use __init_refok to tell |
25 | 40 | * modpost that it is intended that this function uses data |
26 | 41 | * marked __initdata. |
... | ... | @@ -29,7 +44,7 @@ |
29 | 44 | { |
30 | 45 | const struct linux_logo *logo = NULL; |
31 | 46 | |
32 | - if (nologo) | |
47 | + if (nologo || logos_freed) | |
33 | 48 | return NULL; |
34 | 49 | |
35 | 50 | if (depth >= 1) { |