From 6af8172043ddcebfcfc06a0921a10a858de45106 Mon Sep 17 00:00:00 2001 From: Aaro Koskinen Date: Thu, 17 Feb 2011 23:29:12 +0200 Subject: [PATCH] staging: xgifb: fix some memory leaks Some xgifb_probe() error paths are missing proper vfree()s. Move them all into a single place. Signed-off-by: Aaro Koskinen Signed-off-by: Greg Kroah-Hartman --- drivers/staging/xgifb/XGI_main_26.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/staging/xgifb/XGI_main_26.c b/drivers/staging/xgifb/XGI_main_26.c index c245de4fafc8..2328926162f2 100644 --- a/drivers/staging/xgifb/XGI_main_26.c +++ b/drivers/staging/xgifb/XGI_main_26.c @@ -3065,7 +3065,6 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, XGIhw_ext.pCR = vmalloc(sizeof(struct XGI_DSReg) * CR_BUFFER_SIZE); if (XGIhw_ext.pCR == NULL) { - vfree(XGIhw_ext.pSR); printk(KERN_ERR "XGIfb: Fatal error: Allocating CRReg space failed.\n"); ret = -ENODEV; goto error; @@ -3105,8 +3104,6 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, } #endif if (XGIfb_get_dram_size()) { - vfree(XGIhw_ext.pSR); - vfree(XGIhw_ext.pCR); printk(KERN_INFO "XGIfb: Fatal error: Unable to determine RAM size.\n"); ret = -ENODEV; goto error; @@ -3125,8 +3122,6 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, printk("unable request memory size %x", xgi_video_info.video_size); printk(KERN_ERR "XGIfb: Fatal error: Unable to reserve frame buffer memory\n"); printk(KERN_ERR "XGIfb: Is there another framebuffer driver active?\n"); - vfree(XGIhw_ext.pSR); - vfree(XGIhw_ext.pCR); ret = -ENODEV; goto error; } @@ -3134,8 +3129,6 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, if (!request_mem_region(xgi_video_info.mmio_base, XGIfb_mmio_size, "XGIfb MMIO")) { printk(KERN_ERR "XGIfb: Fatal error: Unable to reserve MMIO region\n"); release_mem_region(xgi_video_info.video_base, xgi_video_info.video_size); - vfree(XGIhw_ext.pSR); - vfree(XGIhw_ext.pCR); ret = -ENODEV; goto error; } @@ -3441,6 +3434,8 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, return 0; error: + vfree(XGIhw_ext.pSR); + vfree(XGIhw_ext.pCR); framebuffer_release(fb_info); return ret; } -- 2.20.1