From: Ben Dooks Date: Wed, 6 Feb 2008 09:39:44 +0000 (-0800) Subject: FB/S3C2410: check default_display parameter passed in platform data X-Git-Tag: v2.6.25-rc1~560 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e8973637bd49de225130f9c04ceb388d48969d98;p=linux-2.6 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 Cc: "Antonino A. Daplas" Cc: Vincent Sanders Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/video/s3c2410fb.c b/drivers/video/s3c2410fb.c index e63f536e9f..71fa6edb5c 100644 --- a/drivers/video/s3c2410fb.c +++ b/drivers/video/s3c2410fb.c @@ -817,6 +817,12 @@ static int __init s3c24xxfb_probe(struct platform_device *pdev, return -EINVAL; } + if (mach_info->default_display >= mach_info->num_displays) { + dev_err(&pdev->dev, "default is %d but only %d displays\n", + mach_info->default_display, mach_info->num_displays); + return -EINVAL; + } + display = mach_info->displays + mach_info->default_display; irq = platform_get_irq(pdev, 0);