git: 2617bca5a8c9 - stable/12 - iflib: Unlock ctx lock around call to ether_ifattach()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 20 Jul 2023 22:57:04 UTC
The branch stable/12 has been updated by erj: URL: https://cgit.FreeBSD.org/src/commit/?id=2617bca5a8c98e9e84fba3f2ebd9302e8e893b8f commit 2617bca5a8c98e9e84fba3f2ebd9302e8e893b8f Author: Przemyslaw Lewandowski <przemyslawx.lewandowski@intel.com> AuthorDate: 2023-07-19 22:40:46 +0000 Commit: Eric Joyner <erj@FreeBSD.org> CommitDate: 2023-07-20 22:56:41 +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 <erj@FreeBSD.org> PR: 271768 Reviewed by: erj@, jhb@ Sponsored by: Intel Corporation Differential Revision: https://reviews.freebsd.org/D40557 (cherry picked from commit a52f23f4c49e4766fb9eb0bf460cc83c5f63f17d) --- sys/net/iflib.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/net/iflib.c b/sys/net/iflib.c index 3690be2b2a77..da4cc9addbe9 100644 --- a/sys/net/iflib.c +++ b/sys/net/iflib.c @@ -5196,7 +5196,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); + CTX_LOCK(ctx); if ((err = IFDI_ATTACH_POST(ctx)) != 0) { device_printf(dev, "IFDI_ATTACH_POST failed %d\n", err);