Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

FB/S3C2410: check default_display parameter passed in platform data

Ensure that the default display parameter passed in via the
device's platform data is valid. It turns out when mach-bast.c
was updated, the default_display was set outside of the display
array bounds, causing a panic on startup.

If the default_display is bigger than num_displays, then generate
an error and refuse to initialise the driver.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Cc: Vincent Sanders <vince@simtec.co.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Ben Dooks and committed by
Linus Torvalds
e8973637 c0d40335

+6
+6
drivers/video/s3c2410fb.c
··· 817 817 return -EINVAL; 818 818 } 819 819 820 + if (mach_info->default_display >= mach_info->num_displays) { 821 + dev_err(&pdev->dev, "default is %d but only %d displays\n", 822 + mach_info->default_display, mach_info->num_displays); 823 + return -EINVAL; 824 + } 825 + 820 826 display = mach_info->displays + mach_info->default_display; 821 827 822 828 irq = platform_get_irq(pdev, 0);