Commit a2f2058e authored by Daniel Mack's avatar Daniel Mack Committed by Bartlomiej Zolnierkiewicz

video: fbdev: pxafb: handle errors from pxafb_init_fbinfo() correctly

pxafb_init_fbinfo() can not only report errors caused by failed
allocations but also when the clock can't be found.

To fix this, return an error pointer instead of NULL in case of errors,
and up-chain the result.
Signed-off-by: default avatarDaniel Mack <daniel@zonque.org>
Reviewed-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
parent c8f96304
...@@ -1802,14 +1802,14 @@ static struct pxafb_info *pxafb_init_fbinfo(struct device *dev, ...@@ -1802,14 +1802,14 @@ static struct pxafb_info *pxafb_init_fbinfo(struct device *dev,
fbi = devm_kzalloc(dev, sizeof(struct pxafb_info) + sizeof(u32) * 16, fbi = devm_kzalloc(dev, sizeof(struct pxafb_info) + sizeof(u32) * 16,
GFP_KERNEL); GFP_KERNEL);
if (!fbi) if (!fbi)
return NULL; return ERR_PTR(-ENOMEM);
fbi->dev = dev; fbi->dev = dev;
fbi->inf = inf; fbi->inf = inf;
fbi->clk = devm_clk_get(dev, NULL); fbi->clk = devm_clk_get(dev, NULL);
if (IS_ERR(fbi->clk)) if (IS_ERR(fbi->clk))
return NULL; return ERR_CAST(fbi->clk);
strcpy(fbi->fb.fix.id, PXA_NAME); strcpy(fbi->fb.fix.id, PXA_NAME);
...@@ -2287,10 +2287,9 @@ static int pxafb_probe(struct platform_device *dev) ...@@ -2287,10 +2287,9 @@ static int pxafb_probe(struct platform_device *dev)
} }
fbi = pxafb_init_fbinfo(&dev->dev, inf); fbi = pxafb_init_fbinfo(&dev->dev, inf);
if (!fbi) { if (IS_ERR(fbi)) {
/* only reason for pxafb_init_fbinfo to fail is kmalloc */
dev_err(&dev->dev, "Failed to initialize framebuffer device\n"); dev_err(&dev->dev, "Failed to initialize framebuffer device\n");
ret = -ENOMEM; ret = PTR_ERR(fbi);
goto failed; goto failed;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment