From bdbcb4c4d93d685a62a31762b557c9c3fff9a872 Mon Sep 17 00:00:00 2001 From: Amol Lad Date: Fri, 8 Dec 2006 02:40:02 -0800 Subject: [PATCH] --- yaml --- r: 43774 b: refs/heads/master c: ef26dd7ffa305382aabcd95fd574d01808a65c41 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/video/virgefb.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 3e4cee686244..384917027caf 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dd607d23ff4cc004da2986d0b264a972c6a2da3e +refs/heads/master: ef26dd7ffa305382aabcd95fd574d01808a65c41 diff --git a/trunk/drivers/video/virgefb.c b/trunk/drivers/video/virgefb.c index 64378959dd7b..b9fb6fb3600d 100644 --- a/trunk/drivers/video/virgefb.c +++ b/trunk/drivers/video/virgefb.c @@ -1799,7 +1799,7 @@ int __init virgefb_init(void) #warning release resources printk(KERN_ERR "virgefb.c: register_framebuffer failed\n"); DPRINTK("EXIT\n"); - return -EINVAL; + goto out_unmap; } printk(KERN_INFO "fb%d: %s frame buffer device, using %ldK of video memory\n", @@ -1809,6 +1809,21 @@ int __init virgefb_init(void) DPRINTK("EXIT\n"); return 0; + +out_unmap: + if (board_addr >= 0x01000000) { + if (v_ram) + iounmap((void*)v_ram); + if (vgaio_regs) + iounmap(vgaio_regs); + if (mmio_regs) + iounmap(mmio_regs); + if (vcode_switch_base) + iounmap((void*)vcode_switch_base); + v_ram = vcode_switch_base = 0; + vgaio_regs = mmio_regs = NULL; + } + return -EINVAL; }