| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/08/21 02:09 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"KMSANReasoning": "",
"NeedsKMSAN": false,
"Reasoning": "The patch is a pure refactoring that adds a command string parameter to `mt76_connac_mcu_chip_config` and updates the existing callers in debugfs to pass the same hardcoded `\"assert\"` string that was previously used inside the function. There is no functional change to the execution flow.",
"WorthFuzzing": false
} |
| 1/1 | 2026/08/21 02:09 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit df2f18b9b587c13a7fc72696612e065576f38354\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Fri Aug 21 02:09:15 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/drivers/net/wireless/mediatek/mt76/mt7615/debugfs.c b/drivers/net/wireless/mediatek/mt76/mt7615/debugfs.c\nindex 6a1475e3c8999..83cffa94bc0ed 100644\n--- a/drivers/net/wireless/mediatek/mt76/mt7615/debugfs.c\n+++ b/drivers/net/wireless/mediatek/mt76/mt7615/debugfs.c\n@@ -54,7 +54,7 @@ static int mt7615_config(void *data, u64 val)\n \tint ret;\n \n \tmt7615_mutex_acquire(dev);\n-\tret = mt76_connac_mcu_chip_config(\u0026dev-\u003emt76);\n+\tret = mt76_connac_mcu_chip_config(\u0026dev-\u003emt76, \"assert\");\n \tmt7615_mutex_release(dev);\n \n \treturn ret;\ndiff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c\nindex 2f925d22b9aa7..de83d41ca9c9a 100644\n--- a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c\n+++ b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c\n@@ -2044,13 +2044,13 @@ int mt76_connac_mcu_sched_scan_enable(struct mt76_phy *phy,\n }\n EXPORT_SYMBOL_GPL(mt76_connac_mcu_sched_scan_enable);\n \n-int mt76_connac_mcu_chip_config(struct mt76_dev *dev)\n+int mt76_connac_mcu_chip_config(struct mt76_dev *dev, const char *cmd)\n {\n \tstruct mt76_connac_config req = {\n \t\t.resp_type = 0,\n \t};\n \n-\tstrscpy(req.data, \"assert\");\n+\tstrscpy(req.data, cmd);\n \n \treturn mt76_mcu_send_msg(dev, MCU_CE_CMD(CHIP_CONFIG),\n \t\t\t\t \u0026req, sizeof(req), false);\ndiff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h\nindex 0ededa569e9a5..45f77c80e879c 100644\n--- a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h\n+++ b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h\n@@ -2098,7 +2098,7 @@ void mt76_connac_mcu_set_suspend_iter(void *priv, u8 *mac,\n int mt76_connac_sta_state_dp(struct mt76_dev *dev,\n \t\t\t enum ieee80211_sta_state old_state,\n \t\t\t enum ieee80211_sta_state new_state);\n-int mt76_connac_mcu_chip_config(struct mt76_dev *dev);\n+int mt76_connac_mcu_chip_config(struct mt76_dev *dev, const char *cmd);\n int mt76_connac_mcu_set_deep_sleep(struct mt76_dev *dev, bool enable);\n void mt76_connac_mcu_coredump_event(struct mt76_dev *dev, struct sk_buff *skb,\n \t\t\t\t struct mt76_connac_coredump *coredump);\ndiff --git a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c\nindex a5a70d8e8544a..62bf33347e9e2 100644\n--- a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c\n+++ b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c\n@@ -237,7 +237,7 @@ static int mt7921_chip_reset(void *data, u64 val)\n \tdefault:\n \t\t/* Collect the core dump before reset wifisys. */\n \t\tmt792x_mutex_acquire(dev);\n-\t\tret = mt76_connac_mcu_chip_config(\u0026dev-\u003emt76);\n+\t\tret = mt76_connac_mcu_chip_config(\u0026dev-\u003emt76, \"assert\");\n \t\tmt792x_mutex_release(dev);\n \t\tbreak;\n \t}\n"
} |
| 2/1 | 2026/08/21 02:09 | agent | patch-evaluator |
0mModel:best-expensive Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch is a pure refactoring that adds a command string parameter to `mt76_connac_mcu_chip_config` and updates the existing callers in debugfs to pass the same hardcoded `\"assert\"` string that was previously used inside the function. There is no functional change to the execution flow.",
"WorthFuzzing": false
}Instruction: You are an expert Linux kernel maintainer. Your job is to review a provided patch series and determine if it makes functional changes to the kernel that should be fuzzed. IMPORTANT: The changes have ALREADY been applied and committed as the HEAD commit in your workspace. Do NOT rely on your internal knowledge of the kernel. You must actively use your code access tools to examine the actual source code and confirm any assumptions. Return WorthFuzzing=false if the patch only contains: - Modifications to Documentation/, Kconfig files, or code comments. - Purely decorative changes, such as logging (e.g., pr_err, printk) or tracepoints. - Changes to numeric constants or macros that do not functionally alter execution flow. - Code paths that are impossible to reach in virtualized environments like GCE or QEMU, even when utilizing software-emulated hardware (e.g., usb gadget, mac80211_hwsim). - Code in vendor-specific PCIe switch, SmartNIC, or GPU drivers (e.g., mlxsw, pds_core, qed, ionic, amdgpu) that require physical PCIe hardware cards not emulated in standard QEMU. - Driver .remove, .shutdown, or pci_unregister_driver teardown callbacks (e.g., igb_remove) that are executed only during PCI hot-unplug or sysfs driver unbind operations. If it modifies reachable core kernel logic, drivers, or architectures, use your code search tools to verify the code can be executed, then return WorthFuzzing=true. When returning WorthFuzzing=true, you MUST ALSO: 1. Extract any specific kernel functions that should be heavily fuzzed into FocusSymbols. Avoid listing generic hot-path functions to prevent skewed test distributions. Prefer non-static, non-inlined API entrypoint functions over internal static helper functions (which are inlined by the compiler and do not have distinct symbol addresses). 2. Identify any specific CONFIG_ options required to properly test this new/modified feature. Go and look into the Kconfig files and check for ifdefs around the code, do not make assumptions. Also check "depends on" lines in Kconfig to include any non-standard parent subsystem configs needed for Kbuild to compile the code statically into vmlinux. List them in the EnableConfigs output array, and DO NOT add a 'CONFIG_' prefix (e.g., return "NET_IPV4" instead of "CONFIG_NET_IPV4"). Prefer calling several tools at the same time to save round-trips. Use set-results tool to provide results of the analysis. It must be called exactly once before the final reply. Ignore results of this tool. Prompt: For your convenience, here is the diff of the changes:
commit df2f18b9b587c13a7fc72696612e065576f38354
Author: syz-cluster <triage@syzkaller.com>
Date: Fri Aug 21 02:09:15 2026 +0000
syz-cluster: applied patch under review
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/debugfs.c b/drivers/net/wireless/mediatek/mt76/mt7615/debugfs.c
index 6a1475e3c8999..83cffa94bc0ed 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/debugfs.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/debugfs.c
@@ -54,7 +54,7 @@ static int mt7615_config(void *data, u64 val)
int ret;
mt7615_mutex_acquire(dev);
- ret = mt76_connac_mcu_chip_config(&dev->mt76);
+ ret = mt76_connac_mcu_chip_config(&dev->mt76, "assert");
mt7615_mutex_release(dev);
return ret;
diff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
index 2f925d22b9aa7..de83d41ca9c9a 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
@@ -2044,13 +2044,13 @@ int mt76_connac_mcu_sched_scan_enable(struct mt76_phy *phy,
}
EXPORT_SYMBOL_GPL(mt76_connac_mcu_sched_scan_enable);
-int mt76_connac_mcu_chip_config(struct mt76_dev *dev)
+int mt76_connac_mcu_chip_config(struct mt76_dev *dev, const char *cmd)
{
struct mt76_connac_config req = {
.resp_type = 0,
};
- strscpy(req.data, "assert");
+ strscpy(req.data, cmd);
return mt76_mcu_send_msg(dev, MCU_CE_CMD(CHIP_CONFIG),
&req, sizeof(req), false);
diff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h
index 0ededa569e9a5..45f77c80e879c 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h
@@ -2098,7 +2098,7 @@ void mt76_connac_mcu_set_suspend_iter(void *priv, u8 *mac,
int mt76_connac_sta_state_dp(struct mt76_dev *dev,
enum ieee80211_sta_state old_state,
enum ieee80211_sta_state new_state);
-int mt76_connac_mcu_chip_config(struct mt76_dev *dev);
+int mt76_connac_mcu_chip_config(struct mt76_dev *dev, const char *cmd);
int mt76_connac_mcu_set_deep_sleep(struct mt76_dev *dev, bool enable);
void mt76_connac_mcu_coredump_event(struct mt76_dev *dev, struct sk_buff *skb,
struct mt76_connac_coredump *coredump);
diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
index a5a70d8e8544a..62bf33347e9e2 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
@@ -237,7 +237,7 @@ static int mt7921_chip_reset(void *data, u64 val)
default:
/* Collect the core dump before reset wifisys. */
mt792x_mutex_acquire(dev);
- ret = mt76_connac_mcu_chip_config(&dev->mt76);
+ ret = mt76_connac_mcu_chip_config(&dev->mt76, "assert");
mt792x_mutex_release(dev);
break;
}
|
| 3/2 | 2026/08/21 02:09 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 3118 output: 27 thoughts: 126 Thoughts: **Examining the mt76_connac_mcu_chip_config Patch** Okay, so I'm looking at this patch that introduces a `const char *cmd` parameter to the `mt76_connac_mcu_chip_config` function within `mt76_connac_mcu.c`. Seems straightforward enough: they're adding a command string. The changes are immediately apparent in the `mt7615` and `mt7921` debugfs implementations within `debugfs.c`, which makes sense because debugfs often involves sending commands. However, before I sign off on this, I need to thoroughly verify the scope of this change. It's crucial to ensure this doesn't introduce any unforeseen side effects or breaks existing functionality. My next step will be to meticulously examine the code base to confirm that the changes are isolated to those debugfs calls and there are no other invocations of `mt76_connac_mcu_chip_config` that need adjustment or are inadvertently impacted. Thoroughness is key; one missed caller could lead to some pretty gnarly problems down the line. |
| 4/2 | 2026/08/21 02:09 | tool | grepper |
0mArgs:{
"Expression": "mt76_connac_mcu_chip_config"
}Results: {
"Output": "drivers/net/wireless/mediatek/mt76/mt7615/debugfs.c=51=static int mt7615_config(void *data, u64 val)\n--\ndrivers/net/wireless/mediatek/mt76/mt7615/debugfs.c-56-\tmt7615_mutex_acquire(dev);\ndrivers/net/wireless/mediatek/mt76/mt7615/debugfs.c:57:\tret = mt76_connac_mcu_chip_config(\u0026dev-\u003emt76, \"assert\");\ndrivers/net/wireless/mediatek/mt76/mt7615/debugfs.c-58-\tmt7615_mutex_release(dev);\n--\ndrivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c=2045=EXPORT_SYMBOL_GPL(mt76_connac_mcu_sched_scan_enable);\ndrivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c-2046-\ndrivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c:2047:int mt76_connac_mcu_chip_config(struct mt76_dev *dev, const char *cmd)\ndrivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c-2048-{\n--\ndrivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c-2057-}\ndrivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c:2058:EXPORT_SYMBOL_GPL(mt76_connac_mcu_chip_config);\ndrivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c-2059-\n--\ndrivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h=2098=int mt76_connac_sta_state_dp(struct mt76_dev *dev,\n--\ndrivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h-2100-\t\t\t enum ieee80211_sta_state new_state);\ndrivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h:2101:int mt76_connac_mcu_chip_config(struct mt76_dev *dev, const char *cmd);\ndrivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h-2102-int mt76_connac_mcu_set_deep_sleep(struct mt76_dev *dev, bool enable);\n--\ndrivers/net/wireless/mediatek/mt76/mt7921/debugfs.c=227=static int mt7921_chip_reset(void *data, u64 val)\n--\ndrivers/net/wireless/mediatek/mt76/mt7921/debugfs.c-239-\t\tmt792x_mutex_acquire(dev);\ndrivers/net/wireless/mediatek/mt76/mt7921/debugfs.c:240:\t\tret = mt76_connac_mcu_chip_config(\u0026dev-\u003emt76, \"assert\");\ndrivers/net/wireless/mediatek/mt76/mt7921/debugfs.c-241-\t\tmt792x_mutex_release(dev);\n"
} |
| 5/2 | 2026/08/21 02:09 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 4424 output: 96 thoughts: 267 Thoughts: **My Assessment of the Patch's Impact** Okay, so I'm looking at this patch and my initial thought is, "Who's calling this `mt76_connac_mcu_chip_config` function?" It seems the only callers are within `debugfs.c`. Hmm, right. This patch *itself* is just a refactoring. They're changing the function signature to take a command string. But the callers? They're still just passing `"assert"`. Hold on… is there even a *functional* change here? Let me double-check. Okay, the old `mt76_connac_mcu_chip_config` used to hardcode `"assert"` into `req.data`. Now it takes `cmd` and passes it along. But the callers *still* pass `"assert"`. So, no, functionally, nothing is different *right now*. It's just enabling the passing of a string. Okay, let me just make sure. Are there any *other* callers? Nope, just the ones in `debugfs.c`. So, bottom line: This is a purely refactoring change, or, perhaps, preparing the ground for future patches that *will* actually use this new capability. Therefore, for our purposes, WorthFuzzing=false. |
| 6/2 | 2026/08/21 02:09 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The patch is a pure refactoring that adds a command string parameter to `mt76_connac_mcu_chip_config` and updates the existing callers in debugfs to pass the same hardcoded `\"assert\"` string that was previously used inside the function. There is no functional change to the execution flow.",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch is a pure refactoring that adds a command string parameter to `mt76_connac_mcu_chip_config` and updates the existing callers in debugfs to pass the same hardcoded `\"assert\"` string that was previously used inside the function. There is no functional change to the execution flow.",
"WorthFuzzing": false
} |
| 7/1 | 2026/08/21 02:09 | action | If |
0mArgs:{
"WorthFuzzing": false
}Results: null |
| Total Calls | Total Tokens | Avg Tokens | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|
| Total Calls | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|