forked from Minki/linux
cirrusfb: fix error paths in cirrusfb_xxx_register()
Balance iomap and iounmap and alloc and free calls in case of error druing device register (probing). Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
9e84806253
commit
bc5d8ac02f
@ -2090,8 +2090,6 @@ static int __devinit cirrusfb_register(struct fb_info *info)
|
||||
|
||||
err_dealloc_cmap:
|
||||
fb_dealloc_cmap(&info->cmap);
|
||||
cinfo->unmap(info);
|
||||
framebuffer_release(info);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -2328,18 +2326,15 @@ static int __devinit cirrusfb_zorro_register(struct zorro_dev *z,
|
||||
zorro_set_drvdata(z, info);
|
||||
|
||||
ret = cirrusfb_register(info);
|
||||
if (ret) {
|
||||
if (btype == BT_PICASSO4) {
|
||||
iounmap(info->screen_base);
|
||||
iounmap(cinfo->regbase - 0x600000);
|
||||
} else if (board_addr > 0x01000000)
|
||||
iounmap(info->screen_base);
|
||||
}
|
||||
return ret;
|
||||
if (!ret)
|
||||
return 0;
|
||||
|
||||
if (btype == BT_PICASSO4 || board_addr > 0x01000000)
|
||||
iounmap(info->screen_base);
|
||||
|
||||
err_unmap_regbase:
|
||||
/* Parental advisory: explicit hack */
|
||||
iounmap(cinfo->regbase - 0x600000);
|
||||
if (btype == BT_PICASSO4)
|
||||
iounmap(cinfo->regbase - 0x600000);
|
||||
err_release_region:
|
||||
release_region(board_addr, board_size);
|
||||
err_release_fb:
|
||||
|
Loading…
Reference in New Issue
Block a user