From nobody Tue Feb 24 10:45:09 2026 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fKvW94k4bz6ThXm for ; Tue, 24 Feb 2026 10:45:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fKvW93ZtXz42mV for ; Tue, 24 Feb 2026 10:45:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1771929909; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=quew4mUMabqx9yBwDul93P3fiSfAhibdLz/8z6VNSDg=; b=LBFoj2xMLw5XzDY44sogLbMtCn6EPvdOuatn2CInfx0wtTX2IuA61WDyYBK5Sjml2+k9fv Pees2BetdYyKgarx65ksHNhJe6XyyaoNCuB3bLvK/jLaihoSaSKH+1tg5OVuE069/A+M8K CB4a0ca3pRz6vommcm0MOqIJXKOTj2gmHn76gJ1xhEiTOFcH01iT3G1saWJuWkWYMX1FN6 x9dK77Kx7Ems7Kvkp8zJ8wpM4Hl1wwRxlsxiGFzuXNVyOYI3hlpDkpK5+B7749452DajYY wJlKJ+QYPujL+5zkrN/bzx71pN2mxP45BtipLsMJfc7JaZAiBMsKsw1meVl8HA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1771929909; a=rsa-sha256; cv=none; b=k8m+hRFqScUHeQwzKE9Dw6dd16WIoTaKSy9IXOM8OonKt3pkg+sDg73XrSmXiNRddARhWM 1IR9Uqn1lunjzlHAqzMF1Fohf5vDNKWqSt8uBabNW3ghnW5ArX5QvGNsD3tNMzsyZbwcaU MHdPrXOpa3G89RhkoZ3hykmfmglkxLbP7/5HBzJ0nfPnQIDqFRXxwGUcco6hMxh5h9vR4x RIO17AtAr1K/amDS9d0jNnG20YYnJxkbIMiCbl/hoRmyldqQFjJnXq2T8gY3nO4FB8KGOu 01uAsU1DgkOMRyMSqe6CIiOH2w4tMRsDAk1TMfjaVWcwp73t2m4Pyn2CKufGqg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1771929909; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=quew4mUMabqx9yBwDul93P3fiSfAhibdLz/8z6VNSDg=; b=b9QboaLiYjX9wCt3xEUE/n4THcnczHiGLflNxgUfUccixCnAVAqoM6YmaT9WZlXTcrLBj+ entw8thnrNIxLjlCekfqE/NVBEJmRd3BRgyRtfJRJTy2zIZBc0cAH7GlZi0bWenlYHB+2d xYPChUjbn7ts81pJVgE9+ku2xCcwyfvVigYkflfze0n6OnHY4VRqLKWoxASMGhfQVSGhtK +CgeuVkiwxPQXs7g1DhVJigqoK6mz1V9KGK4DprTQMP33JIZNO8aWXXkKpAztBD8lU3WA9 vpd9/IJ8T/QzrBaqQrSaRBPAUFhj6O3eXv2juri/dLTswvRMm/kYRKRJxpdrKw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fKvW92swKz1BP0 for ; Tue, 24 Feb 2026 10:45:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3661c by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 24 Feb 2026 10:45:09 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Zhenlei Huang Subject: git: e16c965add1d - stable/13 - qlnxe: Prevent potential concurrency between ioctls List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zlei X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e16c965add1d28422f92388daf623dbf967794fe Auto-Submitted: auto-generated Date: Tue, 24 Feb 2026 10:45:09 +0000 Message-Id: <699d8135.3661c.37dbd163@gitrepo.freebsd.org> The branch stable/13 has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=e16c965add1d28422f92388daf623dbf967794fe commit e16c965add1d28422f92388daf623dbf967794fe Author: Zhenlei Huang AuthorDate: 2026-02-06 17:52:53 +0000 Commit: Zhenlei Huang CommitDate: 2026-02-24 10:15:36 +0000 qlnxe: Prevent potential concurrency between ioctls The driver-managed status flags should be lock protected to be touched. Also this can serialize ioctls those check the IFF_DRV_RUNNING status. Reviewed by: kbowling MFC after: 5 days Differential Revision: https://reviews.freebsd.org/D54886 (cherry picked from commit 0df8a998a9fe28af659cb401c537c6d785e55f81) (cherry picked from commit 285b25c080faf71c60de36e834ef31cf70e6b50d) (cherry picked from commit 6e5b12acb66a9e269801b8d88c8f9838044d631c) --- sys/dev/qlnx/qlnxe/qlnx_os.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/sys/dev/qlnx/qlnxe/qlnx_os.c b/sys/dev/qlnx/qlnxe/qlnx_os.c index 28aeaa784e14..f0d83c3356ff 100644 --- a/sys/dev/qlnx/qlnxe/qlnx_os.c +++ b/sys/dev/qlnx/qlnxe/qlnx_os.c @@ -2617,9 +2617,7 @@ qlnx_set_multi(qlnx_host_t *ha, uint32_t add_multi) mcnt = if_foreach_llmaddr(ifp, qlnx_copy_maddr, mta); - QLNX_LOCK(ha); qlnx_hw_set_multi(ha, mta, mcnt, add_multi); - QLNX_UNLOCK(ha); return (0); } @@ -2682,11 +2680,10 @@ qlnx_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) if (ifa->ifa_addr->sa_family == AF_INET) { ifp->if_flags |= IFF_UP; - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { - QLNX_LOCK(ha); + QLNX_LOCK(ha); + if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) qlnx_init_locked(ha); - QLNX_UNLOCK(ha); - } + QLNX_UNLOCK(ha); QL_DPRINT4(ha, "SIOCSIFADDR (0x%lx) ipv4 [0x%08x]\n", cmd, ntohl(IA_SIN(ifa)->sin_addr.s_addr)); @@ -2746,19 +2743,23 @@ qlnx_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) case SIOCADDMULTI: QL_DPRINT4(ha, "%s (0x%lx)\n", "SIOCADDMULTI", cmd); - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + QLNX_LOCK(ha); + if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) { if (qlnx_set_multi(ha, 1)) ret = EINVAL; } + QLNX_UNLOCK(ha); break; case SIOCDELMULTI: QL_DPRINT4(ha, "%s (0x%lx)\n", "SIOCDELMULTI", cmd); - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + QLNX_LOCK(ha); + if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) { if (qlnx_set_multi(ha, 0)) ret = EINVAL; } + QLNX_UNLOCK(ha); break; case SIOCSIFMEDIA: