diff mbox

pci/iov: fix memory leak introduced in "PCI: Store individual VF BAR size in struct pci_sriov"

Message ID 1423066130-8587-1-git-send-email-weiyang@linux.vnet.ibm.com (mailing list archive)
State Superseded
Delegated to: Benjamin Herrenschmidt
Headers show

Commit Message

Wei Yang Feb. 4, 2015, 4:08 p.m. UTC
Bjorn, this is an error introduced in the patch "PCI: Store individual VF BAR
size in struct pci_sriov".

This patch is based on the pci/virtualization branch. I have tried, it could
merge with the bad one cleanly.

Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>
---
 drivers/pci/iov.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Bjorn Helgaas Feb. 4, 2015, 4:28 p.m. UTC | #1
On Thu, Feb 05, 2015 at 12:08:50AM +0800, Wei Yang wrote:
> Bjorn, this is an error introduced in the patch "PCI: Store individual VF BAR
> size in struct pci_sriov".
> 
> This patch is based on the pci/virtualization branch. I have tried, it could
> merge with the bad one cleanly.
> 
> Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>

Great, thanks.  I folded this into "PCI: Store individual VF BAR size in
struct pci_sriov".

> ---
>  drivers/pci/iov.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
> index d64b9df..721987b 100644
> --- a/drivers/pci/iov.c
> +++ b/drivers/pci/iov.c
> @@ -430,10 +430,8 @@ found:
>  	pci_write_config_dword(dev, pos + PCI_SRIOV_SYS_PGSIZE, pgsz);
>  
>  	iov = kzalloc(sizeof(*iov), GFP_KERNEL);
> -	if (!iov) {
> -		rc = -ENOMEM;
> -		goto failed;
> -	}
> +	if (!iov)
> +		return -ENOMEM;
>  
>  	nres = 0;
>  	for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
> @@ -485,6 +483,8 @@ failed:
>  		res->flags = 0;
>  	}
>  
> +	kfree(iov);
> +
>  	return rc;
>  }
>  
> -- 
> 1.8.3.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index d64b9df..721987b 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -430,10 +430,8 @@  found:
 	pci_write_config_dword(dev, pos + PCI_SRIOV_SYS_PGSIZE, pgsz);
 
 	iov = kzalloc(sizeof(*iov), GFP_KERNEL);
-	if (!iov) {
-		rc = -ENOMEM;
-		goto failed;
-	}
+	if (!iov)
+		return -ENOMEM;
 
 	nres = 0;
 	for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
@@ -485,6 +483,8 @@  failed:
 		res->flags = 0;
 	}
 
+	kfree(iov);
+
 	return rc;
 }