]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: hinic: Fix cleanup in create_rxqs/txqs()
authorDan Carpenter <dan.carpenter@linaro.org>
Fri, 13 Dec 2024 14:28:11 +0000 (17:28 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Jan 2025 12:28:31 +0000 (13:28 +0100)
[ Upstream commit 7203d10e93b6e6e1d19481ef7907de6a9133a467 ]

There is a check for NULL at the start of create_txqs() and
create_rxqs() which tess if "nic_dev->txqs" is non-NULL.  The
intention is that if the device is already open and the queues
are already created then we don't create them a second time.

However, the bug is that if we have an error in the create_txqs()
then the pointer doesn't get set back to NULL.  The NULL check
at the start of the function will say that it's already open when
it's not and the device can't be used.

Set ->txqs back to NULL on cleanup on error.

Fixes: c3e79baf1b03 ("net-next/hinic: Add logical Txq and Rxq")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/0cc98faf-a0ed-4565-a55b-0fa2734bc205@stanley.mountain
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/huawei/hinic/hinic_main.c

index 92fba9a0c3718b05f275962dcca9efe8bdbe21f0..a65b20bafcb0c400c7bdcf52a3766d93a227074b 100644 (file)
@@ -172,6 +172,7 @@ err_init_txq:
        hinic_sq_dbgfs_uninit(nic_dev);
 
        devm_kfree(&netdev->dev, nic_dev->txqs);
+       nic_dev->txqs = NULL;
        return err;
 }
 
@@ -268,6 +269,7 @@ err_init_rxq:
        hinic_rq_dbgfs_uninit(nic_dev);
 
        devm_kfree(&netdev->dev, nic_dev->rxqs);
+       nic_dev->rxqs = NULL;
        return err;
 }