summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mack <daniel@zonque.org>2018-07-24 20:11:25 +0300
committerBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>2018-07-24 20:11:25 +0300
commita2f2058e3d295fbaa5f681c1651cb5a8df840966 (patch)
treed53a5b4daa696c01556511b6bfd833c2d2c385e0
parentc8f96304ec8b49f361c2ede3b3a73a2291e0f687 (diff)
downloadlinux-a2f2058e3d295fbaa5f681c1651cb5a8df840966.tar.xz
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: Daniel Mack <daniel@zonque.org> Reviewed-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
-rw-r--r--drivers/video/fbdev/pxafb.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/video/fbdev/pxafb.c b/drivers/video/fbdev/pxafb.c
index 6f3a93b3097c..68459b07d442 100644
--- a/drivers/video/fbdev/pxafb.c
+++ b/drivers/video/fbdev/pxafb.c
@@ -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,
GFP_KERNEL);
if (!fbi)
- return NULL;
+ return ERR_PTR(-ENOMEM);
fbi->dev = dev;
fbi->inf = inf;
fbi->clk = devm_clk_get(dev, NULL);
if (IS_ERR(fbi->clk))
- return NULL;
+ return ERR_CAST(fbi->clk);
strcpy(fbi->fb.fix.id, PXA_NAME);
@@ -2287,10 +2287,9 @@ static int pxafb_probe(struct platform_device *dev)
}
fbi = pxafb_init_fbinfo(&dev->dev, inf);
- if (!fbi) {
- /* only reason for pxafb_init_fbinfo to fail is kmalloc */
+ if (IS_ERR(fbi)) {
dev_err(&dev->dev, "Failed to initialize framebuffer device\n");
- ret = -ENOMEM;
+ ret = PTR_ERR(fbi);
goto failed;
}