From mboxrd@z Thu Jan 1 00:00:00 1970 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: 8bit 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 mt7925 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 = false; pm->suspended = 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); 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 = !!(hw->conf.flags & IEEE80211_CONF_MONITOR); pm->enable = 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 = pm->ds_enable_user && !monitor; mt7925_mcu_set_deep_sleep(dev, pm->ds_enable); } -- 2.52.0