]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Apr 2026 11:32:15 +0000 (13:32 +0200)
commit 8b0c25528cb64f71a73b5c0d49cbbcb68540a4ce upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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;