]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bnge: return after auxiliary_device_uninit() in error path
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 11 Apr 2026 10:45:25 +0000 (12:45 +0200)
committerJakub Kicinski <kuba@kernel.org>
Mon, 13 Apr 2026 22:59:48 +0000 (15:59 -0700)
When auxiliary_device_add() fails, the error block calls
auxiliary_device_uninit() but does not return.  The uninit drops the
last reference and synchronously runs bnge_aux_dev_release(), which sets
bd->auxr_dev = NULL and frees the underlying object.  The subsequent
bd->auxr_dev->net = bd->netdev then dereferences NULL, which is not a
good thing to have happen when trying to clean up from an error.

Add the missing return, as the auxiliary bus documentation states is a
requirement (seems that LLM tools read documentation better than humans
do...)

Cc: Vikas Gupta <vikas.gupta@broadcom.com>
Cc: Andrew Lunn <andrew+netdev@lunn.ch>
Fixes: 8ac050ec3b1c ("bng_en: Add RoCE aux device support")
Cc: stable <stable@kernel.org>
Assisted-by: gregkh_clanker_t1000
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/2026041124-banshee-molecular-0f70@gregkh
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnge/bnge_auxr.c

index b942076762ef591de37edcb7995ab35322e913c6..67e93e17d4d9f1c06681ade03066ecad63e3d4b4 100644 (file)
@@ -194,6 +194,7 @@ void bnge_rdma_aux_device_add(struct bnge_dev *bd)
                dev_warn(bd->dev, "Failed to add auxiliary device for ROCE\n");
                auxiliary_device_uninit(aux_dev);
                bd->flags &= ~BNGE_EN_ROCE;
+               return;
        }
 
        bd->auxr_dev->net = bd->netdev;