drivers: net: qlcnic: Fix potential memory leak in qlcnic_sriov_init()
authorYuan Can <yuancan@huawei.com>
Wed, 7 Dec 2022 08:54:10 +0000 (08:54 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:14:19 +0000 (13:14 +0100)
[ Upstream commit 01de1123322e4fe1bbd0fcdf0982511b55519c03 ]

If vp alloc failed in qlcnic_sriov_init(), all previously allocated vp
needs to be freed.

Fixes: f197a7aa6288 ("qlcnic: VF-PF communication channel implementation")
Signed-off-by: Yuan Can <yuancan@huawei.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c

index 42a44c9..df9b84f 100644 (file)
@@ -221,6 +221,8 @@ int qlcnic_sriov_init(struct qlcnic_adapter *adapter, int num_vfs)
        return 0;
 
 qlcnic_destroy_async_wq:
+       while (i--)
+               kfree(sriov->vf_info[i].vp);
        destroy_workqueue(bc->bc_async_wq);
 
 qlcnic_destroy_trans_wq: