From nobody Mon Feb 9 16:32:45 2026 Received: from mail-dl1-f44.google.com (mail-dl1-f44.google.com [74.125.82.44]) (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 58AE237AA6B for ; Thu, 29 Jan 2026 08:18:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769674732; cv=none; b=VxTx4tvUtczTTbSHCclIzfuJ6tDhjHJIoprf/4LvducpYT4ceSGg4PJ02HoF6BT2xXoxUY1xCdX3HtXmxx7jj6uM3qXShPq+jm/tsI+peAhcwUSu6pYFSsKTANk8ebouaPLY1YYwPBxt4UFTSXCtnvsgub9XzrJVjUsBtRTZVWg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769674732; c=relaxed/simple; bh=tGrKCYWuOVVysmCKf0lksAy7dVWbeM9mIvGdn3TNHuE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NaG0C4TkQD55gdnAGl4n7XSWC5OviKMrkT5dScj/P+g2WlSZ8JgnExgwfNJB3aUyM4KJr6uvIgmpqsntmBNoACRSaXVrT8nBZBnf+vlyjJ2Sy/vyY1Yl/EneqNmHzY5U6jdF6vsC0fNBRAoQwRsgMw+9x+/JLJSrfq82E22XAXM= 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=iueXKMOF; arc=none smtp.client-ip=74.125.82.44 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="iueXKMOF" Received: by mail-dl1-f44.google.com with SMTP id a92af1059eb24-12336c0a8b6so1318107c88.1 for ; Thu, 29 Jan 2026 00:18:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769674730; x=1770279530; 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=IDaqmz+jOzRuCeSxlUAdH2cvfPDelKI52XxXT1MsurU=; b=iueXKMOFR1h+Gzek9wyCB38UYhW2QnXNkJKZH3s/142R8pmKAjriNDhh03XhGwc1qe EU7LhW7+ahhY5gu/CyN9wngfKbTFHqamMaHc725C5zhhp7uwB5cEDC4MA6mu9suN6CNo xTYEx/MHahUl883h+tDZeCEHxKsW07t1ulB/o6hb32PjrodYW1U8EC/dMZisnuCKmsGL mBt4Aw0Knq5D2Gf194trmYsfk9CvRaDTORiAm+6TTLJu8J03UhlSOEwf+j+k7rivU6cs GKsxiKb3FNu9Qm9eB6xf5+0FQLUWvTRFY4NXckK5dVohuS4drM1ImmkzqipQfff7hJac ruAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769674730; x=1770279530; 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=IDaqmz+jOzRuCeSxlUAdH2cvfPDelKI52XxXT1MsurU=; b=NDa3quTVSUIsHjF4r4t6azxVlFKER2ad3VKZLhGDeCgQE6HpWCW1BDWDhT4/9B/M8T j6gz+r0YDP2eWaLyyERFUtBOiMxLjSnQRqFBdHCfTbkSk1cgLhZYGPmEdKdXkS+Crexl kvMSex/af2BQePR8zrlIkir3UD3yhO+TQ7XDRNTMbyTmLv7pksQLeI7o9fV7cWCLyf8C UHGzbKF+cXtZUQhtQd3y0ibhm98yRaCG0l3Gy5n5bv3s2vJUT1B5umXwaP2oV3OQ0S2a ggEKVbSMGo3wJH09e2Sq8n/G6XpXIliwR6UgtoKivGOCiuORGU+mWLxFODvjeSmsPQFH 88lA== X-Forwarded-Encrypted: i=1; AJvYcCUmU3zpzmTxUUMUgPpa8bVbT9AzZ/VfPo2X5cbI3EZiNjWruNSRodquiEfhWEm7WFTwzunu11JKgqMht7k=@vger.kernel.org X-Gm-Message-State: AOJu0Yz9ee9feIrqQBEkeVvjL6kMjpt79ucjkBbaLIMluVf9WlAVJDs+ fpL8WA+wEHKY5BxGcOfQOIWxW/Bp/yZM49eXp/kLbacxQsA9IFqShqF/ X-Gm-Gg: AZuq6aIqJ8qDRyhFKwl91uE+YvtFiPACrXcPJeI+asrPU9L48Sj+Sq0GwGNf32jc7hC EJtBlAzi0mU8b2pio3VjFCkPIm42BdkgVI3T3jjzk6zKiGbFNG0AVSyGLJRB2JFZj+mnbrRVUFD PTRrky1yHFuAB2DqlJqz0Na24Mrzrm59xQH+wQZtAi1hUKapNIDTSXxlXtd8LK8ZDIDNbEmT4ZJ OqRDKU6YCa9sIG5q/urAXRjTIncgv+EqqmjZwfR70wt5QrUBbNnDpbMLv1ajuriiNT9Wra9pRtR CBy4EFkM8wWiEg4iYtx0rdUR0aAWO53ks/pZaFk8zac5vUW+4gtQciHjHE80uITQcmKXYd7ODbw wUXhaivHMaMqV5c634Y4ELK45gPydUn8Y7490Pt+TpgKpXtTVHuOwNcvaK/WeQmgSrAdvgpXy4p 07C8rKfleZB83uVnIzmEVSiDPIe0NYyxPWYKxtzL/lu7W3YcwIMrYpsfY1RblLvZrfUHLob8Y= X-Received: by 2002:a05:7022:e0e:b0:11e:70d8:5dbb with SMTP id a92af1059eb24-124a005f9damr4371735c88.7.1769674730326; Thu, 29 Jan 2026 00:18:50 -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.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Jan 2026 00:18:49 -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 3/6] wifi: mt76: mt7925: add mutex protection in critical paths Date: Thu, 29 Jan 2026 00:18:36 -0800 Message-ID: <20260129081839.179709-4-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 proper mutex protection for mt7925 driver operations that access hardware state without proper synchronization. This fixes race conditions that can cause system instability during power management and recovery. Fixes: 1. mac.c: mt7925_mac_reset_work() - Wrap ieee80211_iterate_active_interfaces() with mt792x_mutex - The vif_connect_iter callback accesses hardware state 2. main.c: mt7925_set_runtime_pm() - Add mutex protection around ieee80211_iterate_active_interfaces() - Runtime PM can race with other operations These protections ensure consistent hardware state access during power management transitions and recovery operations. Fixes: c948b5da6bbe ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt= 7925 device") Signed-off-by: Zac Bowling --- drivers/net/wireless/mediatek/mt76/mt7925/mac.c | 2 ++ drivers/net/wireless/mediatek/mt76/mt7925/main.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mac.c b/drivers/net/= wireless/mediatek/mt76/mt7925/mac.c index f1f0bc9eab04..88cf214ab452 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mac.c @@ -1330,9 +1330,11 @@ void mt7925_mac_reset_work(struct work_struct *work) dev->hw_full_reset =3D false; pm->suspended =3D false; ieee80211_wake_queues(hw); + mt792x_mutex_acquire(dev); ieee80211_iterate_active_interfaces(hw, IEEE80211_IFACE_ITER_RESUME_ALL, mt7925_vif_connect_iter, NULL); + mt792x_mutex_release(dev); mt76_connac_power_save_sched(&dev->mt76.phy, pm); =20 mt7925_regd_change(&dev->phy, "00"); diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net= /wireless/mediatek/mt76/mt7925/main.c index 88ee90709b75..82de6f30ec27 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -770,9 +770,11 @@ void mt7925_set_runtime_pm(struct mt792x_dev *dev) bool monitor =3D !!(hw->conf.flags & IEEE80211_CONF_MONITOR); =20 pm->enable =3D pm->enable_user && !monitor; + mt792x_mutex_acquire(dev); ieee80211_iterate_active_interfaces(hw, IEEE80211_IFACE_ITER_RESUME_ALL, mt7925_pm_interface_iter, dev); + mt792x_mutex_release(dev); pm->ds_enable =3D pm->ds_enable_user && !monitor; mt7925_mcu_set_deep_sleep(dev, pm->ds_enable); } --=20 2.52.0