diff options
author | Andres Salomon <dilinger@queued.net> | 2009-03-31 18:25:30 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-01 11:59:31 -0400 |
commit | eb8972b4407f81b07ea6fc71fd91f9fc7a35a81e (patch) | |
tree | 19b3bed57ec0c767d39a509ae99fa973016d6b8a | |
parent | 909baf0092545e5c2082b045303e7a4b1d2a0522 (diff) |
amifb: check fb_alloc_cmap return value and handle failure properly
Signed-off-by: Andres Salomon <dilinger@debian.org>
Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | drivers/video/amifb.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/video/amifb.c b/drivers/video/amifb.c index 100f23661465..82bedd7f7789 100644 --- a/drivers/video/amifb.c +++ b/drivers/video/amifb.c | |||
@@ -2437,7 +2437,9 @@ default_chipset: | |||
2437 | goto amifb_error; | 2437 | goto amifb_error; |
2438 | } | 2438 | } |
2439 | 2439 | ||
2440 | fb_alloc_cmap(&fb_info.cmap, 1<<fb_info.var.bits_per_pixel, 0); | 2440 | err = fb_alloc_cmap(&fb_info.cmap, 1<<fb_info.var.bits_per_pixel, 0); |
2441 | if (err) | ||
2442 | goto amifb_error; | ||
2441 | 2443 | ||
2442 | if (register_framebuffer(&fb_info) < 0) { | 2444 | if (register_framebuffer(&fb_info) < 0) { |
2443 | err = -EINVAL; | 2445 | err = -EINVAL; |
@@ -2456,7 +2458,8 @@ amifb_error: | |||
2456 | 2458 | ||
2457 | static void amifb_deinit(void) | 2459 | static void amifb_deinit(void) |
2458 | { | 2460 | { |
2459 | fb_dealloc_cmap(&fb_info.cmap); | 2461 | if (fb_info.cmap.len) |
2462 | fb_dealloc_cmap(&fb_info.cmap); | ||
2460 | chipfree(); | 2463 | chipfree(); |
2461 | if (videomemory) | 2464 | if (videomemory) |
2462 | iounmap((void*)videomemory); | 2465 | iounmap((void*)videomemory); |