From nobody Mon Feb 9 12:28:42 2026 Received: from mail-ot1-f49.google.com (mail-ot1-f49.google.com [209.85.210.49]) (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 8BC057E0E8 for ; Fri, 30 Jan 2026 03:25:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769743523; cv=none; b=HIKnl63Wfa46JBpz0YvRl5lad+b5L6sUQVeONsLdjE7sjhxSQRHUhDJHx/Pii+6esr7zeCAzakIlq4xNzSTzzbEDMv4U6ZHT/886PS3PWLva8IKv1GsWF9T2swK/ItOgpa7RBDDORwBCuEprgwMPbxQWDfd0LbhFSnVS2l0ApB0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769743523; c=relaxed/simple; bh=N/F19EKyAEy79y5S0lfKTwus16hpKzJl4uPLwcr9Wp4=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=YO/ZzwGPBwoQEnvJbb14EaKRPOy//AxmFWYeQAfmrnRCof5ZD6NgBYXmSKZLYfshiMrKO6TBZblUOmP+LnkrnVpGmtYomqeaB4kJX7je/kg7GGZ7v/mU3ovFBEdBWm8erqbXs14cL5w7hS9NGHSpVEGpDyoRsd7JiNt6qy5GroU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=u.northwestern.edu; spf=pass smtp.mailfrom=u.northwestern.edu; dkim=pass (2048-bit key) header.d=u-northwestern-edu.20230601.gappssmtp.com header.i=@u-northwestern-edu.20230601.gappssmtp.com header.b=0xlOyoH6; arc=none smtp.client-ip=209.85.210.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=u.northwestern.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=u.northwestern.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=u-northwestern-edu.20230601.gappssmtp.com header.i=@u-northwestern-edu.20230601.gappssmtp.com header.b="0xlOyoH6" Received: by mail-ot1-f49.google.com with SMTP id 46e09a7af769-7cfd65ea639so1083176a34.0 for ; Thu, 29 Jan 2026 19:25:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=u-northwestern-edu.20230601.gappssmtp.com; s=20230601; t=1769743520; x=1770348320; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=6W/Gjxb5BYcwIBkUjagY0/HM2eFwFo2YH1eXPS7fc80=; b=0xlOyoH6DIzwp4/Z+nP8RvLjVux6lHBvzNqUAdbjleHt2Vz9J1OUCt9hHsHG8ZxiWl 5jmM3MZKH46AHihP88oLsjTVOgiUb9s5MDJlkDGvbofqz1WuRMq5BmdJTOVAjxSRqiJw 0p4bTHmkx4BfUpdroI8C0u0OEVgzG+mHBxsXtEPfHr6wZHmnAb2t1QC98dcKM/+2Qi0M ZVlNkKL2YITQCd2i1E93ler1URGNnHVMj91GoDtI2EqUiD373GYkt5W2/0/C8tL3Ef36 ku3fU4k9HzsGUJ0F1hwz7PT1UP+B0lyKQKtIVZksYvbynP5JpjsELZVfEo5m3SCClIF1 OjTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769743520; x=1770348320; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=6W/Gjxb5BYcwIBkUjagY0/HM2eFwFo2YH1eXPS7fc80=; b=n4/8JhoUcfB/RVwAAndpTf5UOu9HpDLWQgIyb1Z7+vuaikl8cLf54mxB3wEuap2cF9 ls7XeLwwFaXtM6FQnBkAzRAHRzWWQ2hWIzKyuA/ErhQIj95K4DXuZCUWQSzep8fDUG1o 4MYuHdimtXee2n5DkswTjuj37aaNMXPsai24MMPSmrfdU66kVUEn5QKhQtcL1Z+4/7Sk K1ycGiaOYrxmxUMtsw41cGHDNNcZBICNEG9CAiFkIuUVSSpALMSTq5CRmaQoNCv/fFxC lCiYRK2Jfq6rha3Pu1TWEhBtrglXd1FxwWNlrEpAKCV0R62QVqFbXgrRS5uyXdRulKAh 8QIA== X-Forwarded-Encrypted: i=1; AJvYcCWCq2r6j1278pxiERQeZxJH+8gvp/pRRFBLJHZqgZgwYOOyMNtISCbzmkiPD4VFE0gqL3R+tv40YFLSHoY=@vger.kernel.org X-Gm-Message-State: AOJu0YyNzqK+qHykdudCjxIUVzUY1noqFkTRMHFTT8dmoW0m4nCnZnbi 6Bmf1IZc+gZ7iAmTXKoI3vZIMCIwa5WplAyJ3r3b1H5fJ/W3rRMIErHdasLvDCeYNCo= X-Gm-Gg: AZuq6aIM7Sw+XcY8gfwnFDnD0jnm9GFYnQTJn6jYIjl+peqkmauYk/NhHKl3R/oCjlM 25OYF9nyhISog+bKBy063lkdEiPxIiQxtAnNV0hGQd33w2uw8Xy1iHd9qs3cRnppaD9utQpY7GR W8c0evc0nujP8ktOdDEJdpABOxd7mWu88Fc8y4Gf8QeP6xeHW1T4cUiti5SgiVwdvBgz3SUED+t JQ5wxp40PrJc3YgfRZbvnMietxNXz/HjHziwtn/1P5gCGT55MzTlrLiGrenkd3ZqekchXfenF+b LFVJZ6P21zx0n3NWsyucAkZBCgiJcBxGDm184z+zaKDtxanJ0jxpqiDLqTfSIvEsPlLGfaHUIa7 kAuo7HaTzog8dzBYv2zNsnCxODPTmtbOB2hFGeGyAifRUMcM5v40OsaUz/Msi93jcoPLne0k5hA 3XVH5ByCE1FWT5WxwBYcA72rKx6ID2lejLraO9A50reOVVOCEN5aHFTU6r066AQFY011AMAFOlb PCB0WVk6ZL0RR7oD1LPUpODT8B20A4JdSw6S0mhrg== X-Received: by 2002:a05:6830:43ab:b0:7cf:d1ed:f9ff with SMTP id 46e09a7af769-7d1a539155fmr1076078a34.34.1769743520479; Thu, 29 Jan 2026 19:25:20 -0800 (PST) Received: from security.cs.northwestern.edu (security.cs.northwestern.edu. [165.124.184.136]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7d18c824251sm4757013a34.26.2026.01.29.19.25.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Jan 2026 19:25:19 -0800 (PST) From: Ziyi Guo To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee Cc: Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Ziyi Guo Subject: [PATCH] wifi: mt76: add missing lock protection in mt76_sta_state for sta_event callback Date: Fri, 30 Jan 2026 03:25:17 +0000 Message-Id: <20260130032517.173590-1-n7l8m4@u.northwestern.edu> X-Mailer: git-send-email 2.34.1 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" mt76_sta_state() calls the sta_event callback without holding dev->mutex. However, mt7915_mac_sta_event() (MT7915 implementation of this callback) calls mt7915_mac_twt_teardown_flow() which has=20 lockdep_assert_held(&dev->mt76.mutex) indicating that callers must=20 hold this lock. The locking pattern in mt76_sta_state() is inconsistent: - mt76_sta_add() acquires dev->mutex before calling dev->drv->sta_add - mt76_sta_remove() acquires dev->mutex before calling __mt76_sta_remove - But sta_event callback is called without acquiring the lock Add mutex_lock()/mutex_unlock() around the sta_event callback invocation to fix the missing lock protection and maintain consistency with the existing locking pattern. Signed-off-by: Ziyi Guo --- drivers/net/wireless/mediatek/mt76/mac80211.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/mac80211.c b/drivers/net/wi= reless/mediatek/mt76/mac80211.c index 75772979f438..468bc176bacb 100644 --- a/drivers/net/wireless/mediatek/mt76/mac80211.c +++ b/drivers/net/wireless/mediatek/mt76/mac80211.c @@ -1640,6 +1640,7 @@ int mt76_sta_state(struct ieee80211_hw *hw, struct ie= ee80211_vif *vif, struct mt76_phy *phy =3D hw->priv; struct mt76_dev *dev =3D phy->dev; enum mt76_sta_event ev; + int ret; =20 phy =3D mt76_vif_phy(hw, vif); if (!phy) @@ -1668,7 +1669,11 @@ int mt76_sta_state(struct ieee80211_hw *hw, struct i= eee80211_vif *vif, else return 0; =20 - return dev->drv->sta_event(dev, vif, sta, ev); + mutex_lock(&dev->mutex); + ret =3D dev->drv->sta_event(dev, vif, sta, ev); + mutex_unlock(&dev->mutex); + + return ret; } EXPORT_SYMBOL_GPL(mt76_sta_state); =20 --=20 2.34.1