From: Amol Lad Date: Fri, 8 Dec 2006 10:40:09 +0000 (-0800) Subject: [PATCH] ioremap balanced with iounmap for drivers/video/macfb X-Git-Tag: v2.6.20-rc1~34^2~106 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=164a765b9895f4f80f91cb7f1aab7539b3f8d335;p=linux-2.6 [PATCH] ioremap balanced with iounmap for drivers/video/macfb ioremap must be balanced by an iounmap and failing to do so can result in a memory leak. Signed-off-by: Amol Lad Cc: "Antonino A. Daplas" Cc: Benjamin Herrenschmidt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/video/macfb.c b/drivers/video/macfb.c index 80a0438071..180d94c2b4 100644 --- a/drivers/video/macfb.c +++ b/drivers/video/macfb.c @@ -608,6 +608,22 @@ void __init macfb_setup(char *options) } } +static void __init iounmap_macfb(void) +{ + if (valkyrie_cmap_regs) + iounmap(valkyrie_cmap_regs); + if (dafb_cmap_regs) + iounmap(dafb_cmap_regs); + if (v8_brazil_cmap_regs) + iounmap(v8_brazil_cmap_regs); + if (rbv_cmap_regs) + iounmap(rbv_cmap_regs); + if (civic_cmap_regs) + iounmap(civic_cmap_regs); + if (csc_cmap_regs) + iounmap(csc_cmap_regs); +} + static int __init macfb_init(void) { int video_cmap_len, video_is_nubus = 0; @@ -962,6 +978,10 @@ static int __init macfb_init(void) if (!err) printk("fb%d: %s frame buffer device\n", fb_info.node, fb_info.fix.id); + else { + iounmap(fb_info.screen_base); + iounmap_macfb(); + } return err; }