Commit 6bbbb680 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Bartlomiej Zolnierkiewicz

video: fbdev: au1200fb: Fix error handling path

Rewrite the exit path based on 'au1200fb_drv_remove()'.
We can safely iterate for all already handled planes. Even if not
completely initialized, the functions that are called will silently accept
the 'fb_info' structure that is passed.

As soon as we find a NULL in the '_au1200fb_infos' array, we know that we
have released all what we needed to release. So we can 'break'.
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
parent 703a4af4
......@@ -1760,11 +1760,19 @@ static int au1200fb_drv_probe(struct platform_device *dev)
return 0;
failed:
/* NOTE: This only does the current plane/window that failed; others are still active */
if (fbi) {
for (plane = 0; plane < device_count; ++plane) {
fbi = _au1200fb_infos[plane];
if (!fbi)
break;
/* Clean up all probe data */
unregister_framebuffer(fbi);
if (fbi->cmap.len != 0)
fb_dealloc_cmap(&fbi->cmap);
kfree(fbi->pseudo_palette);
framebuffer_release(fbi);
_au1200fb_infos[plane] = NULL;
}
return ret;
}
......
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