The branch main has been updated by erj:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=a52f23f4c49e4766fb9eb0bf460cc83c5f63f17d

commit a52f23f4c49e4766fb9eb0bf460cc83c5f63f17d
Author:     Eric Joyner <[email protected]>
AuthorDate: 2023-07-19 22:40:46 +0000
Commit:     Eric Joyner <[email protected]>
CommitDate: 2023-07-19 22:51:26 +0000

    iflib: Unlock ctx lock around call to ether_ifattach()
    
    Panic occurs during loading driver using kldload. It exists since netlink is
    enabled.  There is problem with double locking ctx. This fix allows to call
    ether_ifattach() without locked ctx.
    
    Signed-off-by: Eric Joyner <[email protected]>
    
    PR:             271768
    Reviewed by:    erj@, jhb@
    MFC after:      1 day
    Sponsored by:   Intel Corporation
    Differential Revision:  https://reviews.freebsd.org/D40557
---
 sys/net/iflib.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/sys/net/iflib.c b/sys/net/iflib.c
index d056570d9a99..9f433481afda 100644
--- a/sys/net/iflib.c
+++ b/sys/net/iflib.c
@@ -5386,7 +5386,13 @@ iflib_device_register(device_t dev, void *sc, 
if_shared_ctx_t sctx, if_ctx_t *ct
                goto fail_queues;
        }
 
+       /*
+        * It prevents a double-locking panic with iflib_media_status when
+        * the driver loads.
+        */
+       CTX_UNLOCK(ctx);
        ether_ifattach(ctx->ifc_ifp, ctx->ifc_mac.octet);
+       CTX_LOCK(ctx);
 
        if ((err = IFDI_ATTACH_POST(ctx)) != 0) {
                device_printf(dev, "IFDI_ATTACH_POST failed %d\n", err);

Reply via email to