From nobody Tue Feb 10 04:32:51 2026 Received: from mail-dl1-f65.google.com (mail-dl1-f65.google.com [74.125.82.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5B54837BE8E for ; Thu, 29 Jan 2026 08:18:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769674735; cv=none; b=K6OkwIKkm72BCBlbB5LZtwefTBd8QTPN2UhkrASAGNKLrsEhjZwgv6xKBfIKkfwit+gxnJbytCwyRpfa8f5yiNAnjJHo59s5L0yy5Cw6GLmAvSycZIng+N/zKX60Rcy1P1A3ou0IYCB4R7Aq2SKGqNfdOg4UyGsnGm/11sjm9ns= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769674735; c=relaxed/simple; bh=xl3UgJeqbTdzlSajXSm9VOSPzyX9z7hRNR2pLFxKQuk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=INfhv7IMuNbuaYgUHGA0vlLs5kHxcuDnbn2qA9ZRcdspPolmXHQARTC9eW3V758CTWTtBeb9x0riDTPZ7b7LiTy82PUjd3IUnPMZc1wtSVUMktMq8VXfauHMwLilxuXFgNq2iva5hXNxDWX6jq5/wjzqpe5Igqxut+2su2EQrTU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=zacbowling.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=D7WES9ZF; arc=none smtp.client-ip=74.125.82.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=zacbowling.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="D7WES9ZF" Received: by mail-dl1-f65.google.com with SMTP id a92af1059eb24-124a635476fso976266c88.0 for ; Thu, 29 Jan 2026 00:18:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769674733; x=1770279533; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=UKrm2KEh+DPYHiCEU3ivvoqMw474gqaI6xe0hQwvxHI=; b=D7WES9ZF158rHXc0DHk0UPnBeXIuiMxh8L3KvuwRbSpWQn7FkROjz9Orr2nU6qiO6v e3GGAYZROKzXHcNzge9kV9hQTtxA7SB/BLDNLP2FTYqGrX9VT/nqqtvmFFnKw+fCno8g QUrilUAQ2HOsOT7CqZZbDgr+ng+KJToUX1UTZ6LZvSKhE96zPROAq/uCf+52Jeuxc5MR w/ww9P2sA4411PZxQu8pPqr6Fp0xjqSECrfyRekFxo0uH1AVNiH6vq3t99GOvzCAaR28 1slTBY5LoQolyPkobi1u8RbHWZ8eJEOWV78JkjdIQI2m1CJDR9FKKEMmahIxxYU/l65W F/HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769674733; x=1770279533; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=UKrm2KEh+DPYHiCEU3ivvoqMw474gqaI6xe0hQwvxHI=; b=qRRxiY7laxFhdYQshwHzmvjM/xbmue04h5T9xV6j1p5bKCumjSFUgZukAtQj1UW2fM Z/CAAn4x6wq8HNMx1kKOcK4joXrKvHZL29MSXiSnSmcXXqkUFYitYldr5L1v01m4f9k1 4ZtbDZd7ER98xagp8Y5+kW3h199Tw/r7Dlg3veSnY83wU+ajgXyXiD6bHDJt2l+t85gF 7X6IFvdeCNFx6rkeEEzSJsU72Kc6S9Fl5VAZfAE5/OevpTDpryMb3ZM4A1+9tuT9Ptzn MlauTOgHIPWx9l83l8sesWnI8fUx63AkAGxOcortk2xAvh05h41lk1xMpC45nfIAbADv tuXA== X-Forwarded-Encrypted: i=1; AJvYcCUkXPH3bE4C0BeHkWueNQZqdllS7nUKv8ksZ1S6i8364IhU1Tru00B75b7wnbewMG/3ulkzuguBMWSou/g=@vger.kernel.org X-Gm-Message-State: AOJu0YwvpkNqyNFYs8vNn7GvxdU+L5hMbEhuCwEEyynL+kRawEPePbBs z1s0aQtEG3ZXi60EO/MhzoOeNRIqhwyleW549XoBds0D2DmP5DQ+f2j6 X-Gm-Gg: AZuq6aLgRuMvzsNCEs1hlDTG2LlneUq1AIrtQTju0nxNneGxp711i1lNHtM9brJJWwI idMmfKacGPsQ+TnE1HStxjXBJOB8EiVsQX7duVjAQLlmqqZ1xz1u2nUtcfAeODvY5Vze6KxDfPE Ce3z0/x2jxbz7GglutSegpZPmyttVIjrhOkOzUUjZebMAM+H26bNm1YWOwtKiN0Uz2OKG0ihmKn qsrbK+LWj53IMj80Y5x36kamoLp/ijTq7ygHAjPHSYOYL/0xS/3HtnbqgefVDPIrql4kijq/D4q 2Q0k8BbeZ6n23mvYAqKZQFRvEIs8wregX5gPavZBXAy6UR3CVOKykofMvEfh2+TjAKNP10TcMOK jOltm20Aqd61GhphfYMe0PGQLdZoo5/Wp8VOJ9Lqxx2pkCXAH8CzmJzWbf9CpwtxSulsumlFBkF q/fWDHQP+TOzqy3I6I6eZMD4T6soE3BY/iWR3lKJfZlh0eSgpJb3sYxfyvOJQs X-Received: by 2002:a05:7022:24a9:b0:122:345:a944 with SMTP id a92af1059eb24-124a00f4ecdmr3632733c88.29.1769674733341; Thu, 29 Jan 2026 00:18:53 -0800 (PST) Received: from zcache.home.zacbowling.com ([2001:5a8:60d:bc9:f31e:1cb:296a:cc2a]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-124a9efb4casm5483508c88.16.2026.01.29.00.18.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Jan 2026 00:18:52 -0800 (PST) Sender: Zac Bowling From: Zac To: nbd@nbd.name Cc: deren.wu@mediatek.com, kvalo@kernel.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-wireless@vger.kernel.org, linux@frame.work, lorenzo@kernel.org, ryder.lee@mediatek.com, sean.wang@kernel.org, sean.wang@mediatek.com, zac@zacbowling.com, zbowling@gmail.com Subject: [PATCH v7 5/6] wifi: mt76: mt7925: add lockdep assertions for mutex verification Date: Thu, 29 Jan 2026 00:18:38 -0800 Message-ID: <20260129081839.179709-6-zac@zacbowling.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260129081839.179709-1-zac@zacbowling.com> References: <20260129081839.179709-1-zac@zacbowling.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add lockdep_assert_held() calls to critical MCU functions to help catch mutex violations during development and debugging. This follows the pattern used in other mt76 drivers (mt7996, mt7915, mt7615). Functions with new assertions: - mt7925_mcu_add_bss_info(): Core BSS configuration MCU command - mt7925_mcu_sta_update(): Station record update MCU command - mt7925_mcu_uni_bss_ps(): Power save state MCU command These functions modify firmware state and must be called with the device mutex held to prevent race conditions. The lockdep assertions will trigger warnings at runtime if code paths exist that call these functions without proper mutex protection. Also fixes a potential NULL pointer issue in mt7925_mcu_sta_update() by initializing mlink to NULL and checking it before use. Signed-off-by: Zac Bowling --- drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c b/drivers/net/= wireless/mediatek/mt76/mt7925/mcu.c index 1379bf6a26b5..2ed4af282120 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c @@ -1532,6 +1532,8 @@ int mt7925_mcu_uni_bss_ps(struct mt792x_dev *dev, }, }; =20 + lockdep_assert_held(&dev->mt76.mutex); + if (link_conf->vif->type !=3D NL80211_IFTYPE_STATION) return -EOPNOTSUPP; =20 @@ -2032,13 +2034,15 @@ int mt7925_mcu_sta_update(struct mt792x_dev *dev, .rcpi =3D to_rcpi(rssi), }; struct mt792x_sta *msta; - struct mt792x_link_sta *mlink; + struct mt792x_link_sta *mlink =3D NULL; + + lockdep_assert_held(&dev->mt76.mutex); =20 if (link_sta) { msta =3D (struct mt792x_sta *)link_sta->sta->drv_priv; mlink =3D mt792x_sta_to_link(msta, link_sta->link_id); } - info.wcid =3D link_sta ? &mlink->wcid : &mvif->sta.deflink.wcid; + info.wcid =3D (link_sta && mlink) ? &mlink->wcid : &mvif->sta.deflink.wci= d; info.newly =3D state !=3D MT76_STA_INFO_STATE_ASSOC; =20 return mt7925_mcu_sta_cmd(&dev->mphy, &info); @@ -2840,6 +2844,8 @@ int mt7925_mcu_add_bss_info(struct mt792x_phy *phy, struct mt792x_link_sta *mlink_bc; struct sk_buff *skb; =20 + lockdep_assert_held(&dev->mt76.mutex); + skb =3D __mt7925_mcu_alloc_bss_req(&dev->mt76, &mconf->mt76, MT7925_BSS_UPDATE_MAX_SIZE); if (IS_ERR(skb)) --=20 2.52.0