Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4811a27 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
parents bac22980 a32442d4
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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);

+0 −2
Original line number Diff line number Diff line
@@ -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,
+2 −1
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@ int dss_pll_enable(struct dss_pll *pll)
	return 0;

err_enable:
	if (pll->regulator)
		regulator_disable(pll->regulator);
err_reg:
	clk_disable_unprepare(pll->clkin);
+2 −0
Original line number Diff line number Diff line
@@ -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;

+16 −1
Original line number Diff line number Diff line
@@ -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) {