diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2010-06-30 05:26:35 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2010-08-04 03:03:02 -0400 |
commit | dba6f385b83d7f19eb1d4df12f422bab945c7f10 (patch) | |
tree | 90dd9b477986bc568bc4445c7fbb0c9409a89451 /drivers/video/sh_mobile_lcdcfb.c | |
parent | 8a2b6beffc88b83089845d72eed2ed74eb5c9b1e (diff) |
fbdev: sh-mobile-lcdc: fix potential Oops in SH-Mobile LCDC framebuffer driver
sh_mobile_lcdc_setup_clocks() can perform IO, therefore it has to be called
after ioremap(). Also check return code of ioremap() and use resource_size()
instead of open-coding it.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'drivers/video/sh_mobile_lcdcfb.c')
-rw-r--r-- | drivers/video/sh_mobile_lcdcfb.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/video/sh_mobile_lcdcfb.c b/drivers/video/sh_mobile_lcdcfb.c index 12c451a711e9..0c97509d0237 100644 --- a/drivers/video/sh_mobile_lcdcfb.c +++ b/drivers/video/sh_mobile_lcdcfb.c | |||
@@ -1020,14 +1020,16 @@ static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev) | |||
1020 | goto err1; | 1020 | goto err1; |
1021 | } | 1021 | } |
1022 | 1022 | ||
1023 | priv->base = ioremap_nocache(res->start, resource_size(res)); | ||
1024 | if (!priv->base) | ||
1025 | goto err1; | ||
1026 | |||
1023 | error = sh_mobile_lcdc_setup_clocks(pdev, pdata->clock_source, priv); | 1027 | error = sh_mobile_lcdc_setup_clocks(pdev, pdata->clock_source, priv); |
1024 | if (error) { | 1028 | if (error) { |
1025 | dev_err(&pdev->dev, "unable to setup clocks\n"); | 1029 | dev_err(&pdev->dev, "unable to setup clocks\n"); |
1026 | goto err1; | 1030 | goto err1; |
1027 | } | 1031 | } |
1028 | 1032 | ||
1029 | priv->base = ioremap_nocache(res->start, (res->end - res->start) + 1); | ||
1030 | |||
1031 | for (i = 0; i < j; i++) { | 1033 | for (i = 0; i < j; i++) { |
1032 | cfg = &priv->ch[i].cfg; | 1034 | cfg = &priv->ch[i].cfg; |
1033 | 1035 | ||