vxge: fix memory leak in vxge_alloc_msix() error path
Subsystems (2)
PATCH 1/1 vxge: fix memory leak in vxge_alloc_msix() error path
When pci_enable_msix() returned ret<0, entries and vxge_entries were leaked. While at it, use the centralized exit idiom in the function.
Not tested. It compiles OK.
--- drivers/net/vxge/vxge-main.c | 29 ++++++++++++++++++++--------- 1 files changed, 20 insertions(+), 9 deletions(-)
drivers/net/vxge/vxge-main.c +20 -9
@@ -2262,7 +2262,8 @@ start:vxge_debug_init (VXGE_ERR ,"%s: memory allocation failed" ,VXGE_DRIVER_NAME ); -return -ENOMEM ; + ret = -ENOMEM ; + goto alloc_entries_failed; } vdev->vxge_entries =
@@ -2271,8 +2272,8 @@ start:if (!vdev->vxge_entries) {vxge_debug_init (VXGE_ERR ,"%s: memory allocation failed" ,VXGE_DRIVER_NAME ); -kfree (vdev->entries); -return -ENOMEM ; + ret = -ENOMEM ; + goto alloc_vxge_entries_failed; }for (i =0 , j =0 ; i < vdev->no_of_vpath; i++) {
@@ -2303,22 +2304,32 @@ start:vxge_debug_init (VXGE_ERR ,"%s: MSI-X enable failed for %d vectors, ret: %d" ,VXGE_DRIVER_NAME , vdev->intr_cnt, ret); +if ((max_config_vpath !=VXGE_USE_DEFAULT ) || (ret <3 )) { + ret = -ENODEV ; + goto enable_msix_failed; + } +kfree (vdev->entries);kfree (vdev->vxge_entries); vdev->entries =NULL ; vdev->vxge_entries =NULL ; - -if ((max_config_vpath !=VXGE_USE_DEFAULT ) || (ret <3 )) -return -ENODEV ;/* Try with less no of vector by reducing no of vpaths count */ temp = (ret -1 )/2 ;vxge_close_vpaths (vdev, temp); vdev->no_of_vpath = temp; goto start; - }else if (ret <0 ) -return -ENODEV ; - + }else if (ret <0 ) { + ret = -ENODEV ; + goto enable_msix_failed; + }return 0 ; + +enable_msix_failed: +kfree (vdev->vxge_entries); +alloc_vxge_entries_failed: +kfree (vdev->entries); +alloc_entries_failed: +return ret; }static int vxge_enable_msix (struct vxgedev *vdev)
Signature · 1 line
1.7.1
RE: [PATCH] vxge: fix memory leak in vxge_alloc_msix() error path {nodisc}
Quoted 7 lines
When
pci_enable_msix()returned ret<0, entries andvxge_entrieswere leaked.
While at it, use the centralized exit idiom in the function.Not tested. It compiles OK.
Signed-off-by Michal Schmidt <[email protected]>
Reviewed and tested the patch. Thanks!
Re: [PATCH] vxge: fix memory leak in vxge_alloc_msix() error path {nodisc}
From: Ramkrishna Vepa <[email protected]>
Date: Fri, 25 Jun 2010 00:21:48 -0700
Quoted 11 lines
Quoted 7 lines
When
pci_enable_msix()returned ret<0, entries andvxge_entrieswere leaked.
While at it, use the centralized exit idiom in the function.Not tested. It compiles OK.
Signed-off-by Michal Schmidt <[email protected]>Reviewed and tested the patch. Thanks!
Acked-by Ram Vepa <[email protected]>
Applied.