Skip to content

Commit

Permalink
staging: xgifb: fix some memory leaks
Browse files Browse the repository at this point in the history
Some xgifb_probe() error paths are missing proper vfree()s. Move them
all into a single place.

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Aaro Koskinen authored and Greg Kroah-Hartman committed Feb 18, 2011
1 parent bb29223 commit 6af8172
Showing 1 changed file with 2 additions and 7 deletions.
9 changes: 2 additions & 7 deletions drivers/staging/xgifb/XGI_main_26.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -3125,17 +3122,13 @@ 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;
}

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;
}
Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit 6af8172

Please sign in to comment.