From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (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 299DF1E3DDE for ; Thu, 1 Jan 2026 00:22:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767226978; cv=none; b=Ocon//kjShzmvWDPhva8j16EjD1DvnjccSxULJxyFVYBRTF0LuMMP/5BKQYSHFVDW4lYncRDlVJnC7heMStEGvEeOXZ5OOo/xIBtUkK60DfFIQNhrM4wUalpSQn3YYdiSdKNOWtDKesrYWoqTosYjBrhJaQj3RPPDy5enTWKwSM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767226978; c=relaxed/simple; bh=uXmkWv5M339UFdEp2HwyEfhQgSaymFjQa8XRiW9b+YE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YgiEucqxxZ/+pjvgu4vmC4C5Rrbm6B9ktmCvjiZEC0TLPq77neDc1G8rnHWqzz9MfsJAmYn3i+iMnhMTtsrNh13/RM0ATV5fvmQbgQwfItxLgPZmOICv//pbQt6BjPl9VFNKnAePHod3oQoPRGLeTtlOf0+ZY64+7dQG/TwN/GM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TV8Zt8Pv; arc=none smtp.client-ip=209.85.214.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.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="TV8Zt8Pv" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-2a07f8dd9cdso116049285ad.1 for ; Wed, 31 Dec 2025 16:22:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767226976; x=1767831776; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=C7hP4/6MzXBlCphVpjUPnbzonToHfVmgk1yWMeGEYqo=; b=TV8Zt8PvBWfYIqLzhDvEBRBTvX5IQGayxC8yQ1YP/TyY1PYBY6ncNnzBFTMGawlVNS SZipty6EhCqWQtnDUMJP8JinUp5tsv4uXeqi6DZbRnIWbQWcjQLZZ8YVTQBj99NOGSVc unCWyI32wdNtfXXbpzgVCdkkcsHUJTjsRtWOLch4zl1HXCp4F/9goGhrK7kfhRvrJtr8 UIGWyrdTo6+yBfLS5rH0AcVvJd1j4dBdT4LNxn4pioAhgXQ8Pmjy3ncy1GyyNMX5ibxM c25aK4MMgvVHFYdInyAWyMDh68RCxtykHmaEDvujnETOx8lSnbL7DAtUSJar7mEA7UTa UiQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767226976; x=1767831776; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=C7hP4/6MzXBlCphVpjUPnbzonToHfVmgk1yWMeGEYqo=; b=A46elYBSAoWg8WRCly9g1hiw4b+BiqDtCgaCZuMrwO+uKH9EGooI5RNsvl6v7KmHrC g8eAODRLHzQ7ZBIoRonI/ok6qUj0x6jG5Z5JEUMPQUt410MrZkWtUZl8tCa9JIHMmuLp jx5IkewAZNK9L0Z97IbV9eV/EIWt9H4AdLzmY4BH/BFSKhvnHOqfrApP945PZ4oE6qvX gDr646zJ08Ni0w4KstoHoAioOCIIP4d7l/S8lt9+ODIo7oJKDBRR7Fo/t4p2TLOBkCC8 avD3TR9/4s7gXRK1XToX9SXR+zi+ogordFHFrNWpV53tp18WGXkmx2IEUOXiFA3Nwnkc M95w== X-Forwarded-Encrypted: i=1; AJvYcCWaHI8j+KXR0/vgtOSyAora1mxRr3DI824Q1ApzQyjavbcSnxBykVH2ty7QfXKuBuC2Ddg/Xua37u8If38=@vger.kernel.org X-Gm-Message-State: AOJu0YxmS2+YaxlKJI30tLWjtLNWaU2m1Agh4hfkNlcJ66xK3VyfaNsT BG+CGG7nBs3vSmRObvsJHf7HqaO5YAw9479BB+4g/GuUREkJUNkrwVRj X-Gm-Gg: AY/fxX7qwItGnTISHenDdv986Ox5xcgm8HXl75NmNquuXX98LlM//IQdRP/EGCYBwE5 TZDJ6Lay18XhcjzRW8AAATX6c1+Fngtmf6ljaFIqkfmb0KwoOX5mhBzOCOKKPKjK4a1aon+Q4PJ vsXNIYv5vY/xR/6yVNf2hifs+N6HmCfoo9MzoN4oSWD7TH5E5jqBTwx/jB1vOcyIDrL4A7O06T7 26RiRZVoDDXFmvgMrDz5DNrTUjeZyld88TH2VodDfgpupeabk9dX6ttbaurvFAZRbMfG6a0LLd7 CQmI2XhwlXAyBn/kmmKfia1Ki3cwCvEiqZCrP6XS69yrjbbH17JwX+B6sWQG1F7UuZEiUGnoPdu d4RQTJr7GyFSXHAN1zcygvRbWFLQWV6LEpkD+lqUjg7LLTwc2lymZpvRkxoGGKPmI0s4dswGFg3 d/4npTTUMLXJcF0is9WzxF5CiA27C4ZHx3zm2Hmib/e2GDSNlTFyUk8rwqKG9awt5kjnjgg2ONq A== X-Google-Smtp-Source: AGHT+IGvR3F8ZvfS9X6tm+SOPzohfY0S2Rtcb+Z9cxmiC/usD4FDeoHXUceXcAntkCJaJbwQT2hJig== X-Received: by 2002:a05:7022:e24:b0:119:e56b:98ab with SMTP id a92af1059eb24-121722b7ac5mr34376559c88.18.1767226976361; Wed, 31 Dec 2025 16:22:56 -0800 (PST) Received: from zubuntu.bengal-mercat.ts.net ([2001:5a8:60d:bc9:9ebf:dff:fe00:f8f2]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-121724de268sm110976431c88.8.2025.12.31.16.22.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Dec 2025 16:22:55 -0800 (PST) From: Zac Bowling To: zbowling@gmail.com Cc: deren.wu@mediatek.com, kvalo@kernel.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-wireless@vger.kernel.org, lorenzo@kernel.org, nbd@nbd.name, ryder.lee@mediatek.com, sean.wang@mediatek.com, zac@zacbowling.com Subject: [PATCH 2/3] wifi: mt76: mt7925: fix missing mutex protection in reset and ROC abort Date: Wed, 31 Dec 2025 16:22:53 -0800 Message-ID: <20260101002253.19078-1-zbowling@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251231223702.30957-1-zbowling@gmail.com> References: <20251231223702.30957-1-zbowling@gmail.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 From: Zac Bowling During firmware recovery and ROC (Remain On Channel) abort operations, the driver iterates over active interfaces and calls MCU functions that require the device mutex to be held, but the mutex was not acquired. This causes system-wide hangs where network commands hang indefinitely, processes get stuck in uninterruptible sleep (D state), and the system becomes completely unresponsive requiring force reboot. Add mutex protection around interface iteration in: - mt7925_mac_reset_work(): Called during firmware recovery after MCU timeouts to reconnect all interfaces - mt7925_roc_abort_sync(): Called during suspend/resume and when aborting Remain On Channel operations This matches the pattern used elsewhere in the driver where interface iteration callbacks invoke MCU functions. Reported-by: Zac Bowling Tested-by: Zac Bowling Signed-off-by: Zac Bowling --- drivers/net/wireless/mediatek/mt76/mt7925/mac.c | 2 ++ drivers/net/wireless/mediatek/mt76/mt7925/pci.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 184efe8afa10..06420ac6ed55 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mac.c @@ -1331,9 +1331,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/pci.c b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c index c4161754c01d..e9d62c6aee91 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -455,7 +455,9 @@ static int mt7925_pci_suspend(struct device *device) cancel_delayed_work_sync(&pm->ps_work); cancel_work_sync(&pm->wake_work); + mt792x_mutex_acquire(dev); mt7925_roc_abort_sync(dev); + mt792x_mutex_release(dev); err = mt792x_mcu_drv_pmctrl(dev); if (err < 0) -- 2.51.0