From: Ben Dooks <ben-linux@fluff.org>
Date: Wed, 6 Feb 2008 09:39:44 +0000 (-0800)
Subject: FB/S3C2410: check default_display parameter passed in platform data
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=e8973637bd49de225130f9c04ceb388d48969d98;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git

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>
---

diff --git a/drivers/video/s3c2410fb.c b/drivers/video/s3c2410fb.c
index e63f536e9fed..71fa6edb5c47 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);