fbdev fixes for 3.19
* Fix regression with Nokia N900 display * Fix crash on fbdev using freed __initdata logos * Fix fb_deferred_io_fsync() return value. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJUoo6HAAoJEPo9qoy8lh71HxcQAJrloQCmTrG14pU0pmwUSehf KeHfBh8IJlg+xvb9bRAmuAUWE+m1IH98157SpbYxOaEm9jhEF4CFKPGC34BTZzM9 ATd7GK+v6AaLOgUe+9dEgzRieh2WMMkVdm+p6oUYhtskk0pPIz+GQTLThBBr5qL2 jZ2TWiWPze0Kfr4e5xF57DuFNQgWmIIKBlOSU4bTco+cjl9VhHVTqGCR90+VRJva /92qd3OzHquGirkvIxPpG2BzLV9PJjyrwiZEKPue5XuZzSwqDZFI5hMClTSJLW/o 6nTlfYLfGWDFrbholG28VIcebXhGl3ijoKP8R52ncGVaeIEq3qBfmp4u5NhzVFEn F38cWxT2H5m9EZ9r9BBObf4qLYFV84V/yIDYvAsXikJzk9ggp9jNUMdpA9xklAGT tD80OVcYU9r5E5ohq5fODF5sZ54ahs4ULsizrGHcIB9S7sW5K8U2kpNkHSjpXwvH YI8A9UxyUUGkHpHhgrgnR7wGJBr8nySml6k9Eg7o25C9KWpMsf7zNiPlcMh2N+ga z2lxGHome0AX6riweYxh9tfNOuTFjTbAbmW5pdISBk0Kh5c+917uZAAURoWQXBNB r6PEDKQSZvz0ENVF75z1VvLPEKh1yOcVKGX3s7+431dkVW3dZ5KIDaka+78baAzc GDn7rS0Bl4UiGXmXsyfG =7IGm -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
e4811a2784
|
@ -83,9 +83,10 @@ int fb_deferred_io_fsync(struct file *file, loff_t start, loff_t end, int datasy
|
|||
cancel_delayed_work_sync(&info->deferred_work);
|
||||
|
||||
/* Run it immediately */
|
||||
err = schedule_delayed_work(&info->deferred_work, 0);
|
||||
schedule_delayed_work(&info->deferred_work, 0);
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
return err;
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(fb_deferred_io_fsync);
|
||||
|
||||
|
|
|
@ -132,7 +132,6 @@ static const struct dss_pll_hw dss_omap4_hdmi_pll_hw = {
|
|||
.mX_max = 127,
|
||||
.fint_min = 500000,
|
||||
.fint_max = 2500000,
|
||||
.clkdco_max = 1800000000,
|
||||
|
||||
.clkdco_min = 500000000,
|
||||
.clkdco_low = 1000000000,
|
||||
|
@ -156,7 +155,6 @@ static const struct dss_pll_hw dss_omap5_hdmi_pll_hw = {
|
|||
.mX_max = 127,
|
||||
.fint_min = 620000,
|
||||
.fint_max = 2500000,
|
||||
.clkdco_max = 1800000000,
|
||||
|
||||
.clkdco_min = 750000000,
|
||||
.clkdco_low = 1500000000,
|
||||
|
|
|
@ -97,7 +97,8 @@ int dss_pll_enable(struct dss_pll *pll)
|
|||
return 0;
|
||||
|
||||
err_enable:
|
||||
regulator_disable(pll->regulator);
|
||||
if (pll->regulator)
|
||||
regulator_disable(pll->regulator);
|
||||
err_reg:
|
||||
clk_disable_unprepare(pll->clkin);
|
||||
return r;
|
||||
|
|
|
@ -342,6 +342,8 @@ static void sdi_init_output(struct platform_device *pdev)
|
|||
out->output_type = OMAP_DISPLAY_TYPE_SDI;
|
||||
out->name = "sdi.0";
|
||||
out->dispc_channel = OMAP_DSS_CHANNEL_LCD;
|
||||
/* We have SDI only on OMAP3, where it's on port 1 */
|
||||
out->port_num = 1;
|
||||
out->ops.sdi = &sdi_ops;
|
||||
out->owner = THIS_MODULE;
|
||||
|
||||
|
|
|
@ -21,6 +21,21 @@ static bool nologo;
|
|||
module_param(nologo, bool, 0);
|
||||
MODULE_PARM_DESC(nologo, "Disables startup logo");
|
||||
|
||||
/*
|
||||
* Logos are located in the initdata, and will be freed in kernel_init.
|
||||
* Use late_init to mark the logos as freed to prevent any further use.
|
||||
*/
|
||||
|
||||
static bool logos_freed;
|
||||
|
||||
static int __init fb_logo_late_init(void)
|
||||
{
|
||||
logos_freed = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
late_initcall(fb_logo_late_init);
|
||||
|
||||
/* logo's are marked __initdata. Use __init_refok to tell
|
||||
* modpost that it is intended that this function uses data
|
||||
* marked __initdata.
|
||||
|
@ -29,7 +44,7 @@ const struct linux_logo * __init_refok fb_find_logo(int depth)
|
|||
{
|
||||
const struct linux_logo *logo = NULL;
|
||||
|
||||
if (nologo)
|
||||
if (nologo || logos_freed)
|
||||
return NULL;
|
||||
|
||||
if (depth >= 1) {
|
||||
|
|
Loading…
Reference in a new issue