| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/08/27 13:30 | flow | patch-triage |
6mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"KMSANReasoning": "",
"NeedsKMSAN": false,
"Reasoning": "The patch only adds a trivial device property check to skip a regulatory hint during driver initialization. In standard fuzzing environments, this specific device tree property will not be present, meaning the execution flow remains unchanged. Furthermore, the change is too simple to introduce memory corruption or complex logic bugs.",
"WorthFuzzing": false
} |
| 1/1 | 2026/08/27 13:30 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit 3295cb0085c30078f3d907f8f967f6b8257ef99c\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Thu Aug 27 13:30:07 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/Documentation/devicetree/bindings/net/wireless/marvell,sd8787.yaml b/Documentation/devicetree/bindings/net/wireless/marvell,sd8787.yaml\nindex 930b700b73d00..9f905ef5c2c07 100644\n--- a/Documentation/devicetree/bindings/net/wireless/marvell,sd8787.yaml\n+++ b/Documentation/devicetree/bindings/net/wireless/marvell,sd8787.yaml\n@@ -59,6 +59,12 @@ properties:\n description: Calibration data for sub-band 3 in the 5GHz band.\n maxItems: 502\n \n+ marvell,invalid-reg-hint-in-rom:\n+ $ref: /schemas/types.yaml#/definitions/flag\n+ description:\n+ The regulatory hint in ROM conflicts with platform configuration.\n+ It should be ignored, so the platform regulatory domain can be used.\n+\n marvell,wakeup-pin:\n $ref: /schemas/types.yaml#/definitions/uint32\n description:\ndiff --git a/arch/arm/boot/dts/marvell/armada-385-linksys-rango.dts b/arch/arm/boot/dts/marvell/armada-385-linksys-rango.dts\nindex 4ab45f294de22..2bf29981a0313 100644\n--- a/arch/arm/boot/dts/marvell/armada-385-linksys-rango.dts\n+++ b/arch/arm/boot/dts/marvell/armada-385-linksys-rango.dts\n@@ -165,6 +165,15 @@ \u0026sdhci {\n \twp-inverted;\n \tbus-width = \u003c8\u003e;\n \tstatus = \"okay\";\n+\n+\t#address-cells = \u003c1\u003e;\n+\t#size-cells = \u003c0\u003e;\n+\n+\twifi@1 {\n+\t\tcompatible = \"marvell,sd8897\";\n+\t\treg = \u003c1\u003e;\n+\t\tmarvell,invalid-reg-hint-in-rom;\n+\t};\n };\n \n \u0026usb3_1_vbus {\ndiff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c\nindex 7a1ba32f1fb36..293876397b670 100644\n--- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c\n+++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c\n@@ -4897,7 +4897,14 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)\n \t\t\t\tcountry_code =\n \t\t\t\t\tmwifiex_11d_code_2_region(\n \t\t\t\t\t\tadapter-\u003eregion_code);\n+\n+\t\t\t\t/* If the reg hint in ROM conflicts with platform\n+\t\t\t\t * configuration, it should be ignored, so the\n+\t\t\t\t * platform regulatory domain can be used.\n+\t\t\t\t */\n \t\t\t\tif (country_code \u0026\u0026\n+\t\t\t\t !device_property_read_bool(adapter-\u003edev,\n+\t\t\t\t\t\t\t \"marvell,invalid-reg-hint-in-rom\") \u0026\u0026\n \t\t\t\t regulatory_hint(wiphy, country_code))\n \t\t\t\t\tmwifiex_dbg(priv-\u003eadapter, ERROR,\n \t\t\t\t\t\t \"regulatory_hint() failed\\n\");\n"
} |
| 2/1 | 2026/08/27 13:30 | agent | patch-evaluator |
6mModel:best-expensive Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch only adds a trivial device property check to skip a regulatory hint during driver initialization. In standard fuzzing environments, this specific device tree property will not be present, meaning the execution flow remains unchanged. Furthermore, the change is too simple to introduce memory corruption or complex logic bugs.",
"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 3295cb0085c30078f3d907f8f967f6b8257ef99c
Author: syz-cluster <triage@syzkaller.com>
Date: Thu Aug 27 13:30:07 2026 +0000
syz-cluster: applied patch under review
diff --git a/Documentation/devicetree/bindings/net/wireless/marvell,sd8787.yaml b/Documentation/devicetree/bindings/net/wireless/marvell,sd8787.yaml
index 930b700b73d00..9f905ef5c2c07 100644
--- a/Documentation/devicetree/bindings/net/wireless/marvell,sd8787.yaml
+++ b/Documentation/devicetree/bindings/net/wireless/marvell,sd8787.yaml
@@ -59,6 +59,12 @@ properties:
description: Calibration data for sub-band 3 in the 5GHz band.
maxItems: 502
+ marvell,invalid-reg-hint-in-rom:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description:
+ The regulatory hint in ROM conflicts with platform configuration.
+ It should be ignored, so the platform regulatory domain can be used.
+
marvell,wakeup-pin:
$ref: /schemas/types.yaml#/definitions/uint32
description:
diff --git a/arch/arm/boot/dts/marvell/armada-385-linksys-rango.dts b/arch/arm/boot/dts/marvell/armada-385-linksys-rango.dts
index 4ab45f294de22..2bf29981a0313 100644
--- a/arch/arm/boot/dts/marvell/armada-385-linksys-rango.dts
+++ b/arch/arm/boot/dts/marvell/armada-385-linksys-rango.dts
@@ -165,6 +165,15 @@ &sdhci {
wp-inverted;
bus-width = <8>;
status = "okay";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ wifi@1 {
+ compatible = "marvell,sd8897";
+ reg = <1>;
+ marvell,invalid-reg-hint-in-rom;
+ };
};
&usb3_1_vbus {
diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
index 7a1ba32f1fb36..293876397b670 100644
--- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
@@ -4897,7 +4897,14 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)
country_code =
mwifiex_11d_code_2_region(
adapter->region_code);
+
+ /* If the reg hint in ROM conflicts with platform
+ * configuration, it should be ignored, so the
+ * platform regulatory domain can be used.
+ */
if (country_code &&
+ !device_property_read_bool(adapter->dev,
+ "marvell,invalid-reg-hint-in-rom") &&
regulatory_hint(wiphy, country_code))
mwifiex_dbg(priv->adapter, ERROR,
"regulatory_hint() failed\n");
|
| 3/2 | 2026/08/27 13:30 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 2704 output: 45 thoughts: 354 Thoughts: **Fuzzing Feasibility: Marvell SD8787 WiFi Driver Update** Okay, so I'm looking at this patch and it's touching a few files: the DT binding, a specific device tree, and the `mwifiex` driver. Specifically, it's a minor addition within `mwifiex_register_cfg80211` – a check for the `marvell,invalid-reg-hint-in-rom` device property. If this property is true, it simply *skips* calling `regulatory_hint(wiphy, country_code)`. A very targeted change. My immediate thought is, "Is this even worth fuzzing?" It's a localized modification in one specific wireless driver, the Marvell WiFi-Ex driver, and just bypasses a regulatory hint. These hardware-specific wireless drivers, like `mwifiex`, are typically a pain to fuzz directly because they require specific hardware – SDIO, PCIe, or USB in this case. Without something like `mac80211_hwsim`, it's often a dead end. But wait... this thing *does* have a USB driver, `mwifiex_usb`! That's a game-changer. USB drivers are often fuzzable using dummy HCDs or syzkaller's USB fuzzing capabilities. Now, the crucial question: can we even reach `mwifiex_register_cfg80211` via the USB path? If we can, then this patch becomes a potential target. I need to investigate if the USB driver ultimately calls this function. If so, this could be a worthwhile fuzzing target to uncover some new findings. |
| 4/2 | 2026/08/27 13:30 | tool | grepper |
0mArgs:{
"Expression": "mwifiex_register_cfg80211",
"PathPrefix": "drivers/net/wireless/marvell/mwifiex/"
}Results: {
"Output": "drivers/net/wireless/marvell/mwifiex/cfg80211.c=4668=int mwifiex_init_channel_scan_gap(struct mwifiex_adapter *adapter)\n--\ndrivers/net/wireless/marvell/mwifiex/cfg80211.c-4697-\ndrivers/net/wireless/marvell/mwifiex/cfg80211.c:4698:int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)\ndrivers/net/wireless/marvell/mwifiex/cfg80211.c-4699-{\n--\ndrivers/net/wireless/marvell/mwifiex/cfg80211.h-14-\ndrivers/net/wireless/marvell/mwifiex/cfg80211.h:15:int mwifiex_register_cfg80211(struct mwifiex_adapter *);\ndrivers/net/wireless/marvell/mwifiex/cfg80211.h-16-\n--\ndrivers/net/wireless/marvell/mwifiex/main.c=535=static int _mwifiex_fw_dpc(const struct firmware *firmware, void *context)\n--\ndrivers/net/wireless/marvell/mwifiex/main.c-586-\tif (!adapter-\u003ewiphy) {\ndrivers/net/wireless/marvell/mwifiex/main.c:587:\t\tif (mwifiex_register_cfg80211(adapter)) {\ndrivers/net/wireless/marvell/mwifiex/main.c-588-\t\t\tmwifiex_dbg(adapter, ERROR,\n"
} |
| 5/2 | 2026/08/27 13:30 | llm | patch-evaluator |
2mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 3886 output: 37 thoughts: 1017 Thoughts: **Fuzzing Decision for a Wi-Fi Driver Patch** Okay, let's break this down. We're looking at a patch in `mwifiex_register_cfg80211`, triggered by a firmware download completion callback, specifically `_mwifiex_fw_dpc`. The potential for fuzzing stems from USB emulation, which can trigger the firmware download sequence. The change itself is incredibly small: a single `if` statement that checks for a device property, `marvell,invalid-reg-hint-in-rom`, and if it's set, skips the `regulatory_hint` function. Initially, my instinct was to mark this as not worth fuzzing. It's an initialization check, not introducing any significant logic or state changes. It's hardware-specific, and the change is trivial - a simple boolean check. However, the instructions explicitly state that code reachable in QEMU via software-emulated hardware *should* be marked for fuzzing. We *can* trigger this code path via USB emulation in QEMU, so that rule applies. So the question becomes: is this a modification that alters "reachable core kernel logic, drivers, or architectures"? It's a Wi-Fi driver, so it’s not vendor-specific PCIe switch, SmartNIC, or GPU driver, and it is a reachable driver. The modification *does* functionally alter execution flow by skipping the `regulatory_hint` function if the device property is set, making this WorthFuzzing=true. The critical thing, however, is that in a standard x86 QEMU environment, which is what we typically use, this device property won't be present, so the code path will remain unchanged. `device_property_read_bool` will return false, the `if` will evaluate to false, and the `regulatory_hint` function will *not* be skipped. In other words, in a standard fuzzing environment, this code path will not be reached, the "alteration" won't manifest. Even though it’s technically reachable and alters execution flow, the odds of this small change revealing anything with current fuzzing techniques are incredibly small, because it is an `if` condition with a property read that is normally false. So, while the instructions *technically* make this fuzzable (because it's reachable), I'm leaning heavily towards `WorthFuzzing=false` here. This change doesn't introduce complexity or a new attack surface within the standard fuzzing context. If I went with `WorthFuzzing=true`, I'd need to supply `MWIFIEX`, `MWIFIEX_USB` as the `EnableConfigs`, and `mwifiex_register_cfg80211` as the `FocusSymbols`. However, because the change is very small and the behavior is not normally reached, it is not worth the resources. |
| 6/2 | 2026/08/27 13:33 | tool | grepper |
0mArgs:{
"Expression": "config MWIFIEX",
"PathPrefix": "drivers/net/wireless/marvell/mwifiex/"
}Results: {
"Output": "drivers/net/wireless/marvell/mwifiex/Kconfig-1-# SPDX-License-Identifier: GPL-2.0-only\ndrivers/net/wireless/marvell/mwifiex/Kconfig:2:config MWIFIEX\ndrivers/net/wireless/marvell/mwifiex/Kconfig-3-\ttristate \"Marvell WiFi-Ex Driver\"\n--\ndrivers/net/wireless/marvell/mwifiex/Kconfig-11-\ndrivers/net/wireless/marvell/mwifiex/Kconfig:12:config MWIFIEX_SDIO\ndrivers/net/wireless/marvell/mwifiex/Kconfig-13-\ttristate \"Marvell WiFi-Ex Driver for SD8786/SD8787/SD8797/SD8887/SD8897/SD8977/SD8978/SD8987/SD8997\"\n--\ndrivers/net/wireless/marvell/mwifiex/Kconfig-24-\ndrivers/net/wireless/marvell/mwifiex/Kconfig:25:config MWIFIEX_PCIE\ndrivers/net/wireless/marvell/mwifiex/Kconfig-26-\ttristate \"Marvell WiFi-Ex Driver for PCIE 8766/8897/8997\"\n--\ndrivers/net/wireless/marvell/mwifiex/Kconfig-36-\ndrivers/net/wireless/marvell/mwifiex/Kconfig:37:config MWIFIEX_USB\ndrivers/net/wireless/marvell/mwifiex/Kconfig-38-\ttristate \"Marvell WiFi-Ex Driver for USB8766/8797/8997\"\n"
} |
| 7/2 | 2026/08/27 13:33 | llm | patch-evaluator |
2mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 5984 output: 88 thoughts: 595 Thoughts: **My Assessment of the Patch's Fuzzing Worthiness**
Okay, let's break this down. The change is within `mwifiex_register_cfg80211`, and I need to decide if it's worth fuzzing. Initially, my thought was, "WorthFuzzing=false" because the patch *seems* trivial. It just adds a device property check to potentially skip a regulatory hint during driver initialization. In a standard fuzzing setup like x86 QEMU, that specific device tree property ("marvell,invalid-reg-hint-in-rom") is unlikely to be present. So, the core execution path, at least from a fuzzer's perspective, remains unchanged. It just seems too simple to introduce memory corruption or any complex logic bugs.
But, hang on a second. The prompt provides explicit criteria. It lists situations where returning "WorthFuzzing=false" is appropriate. Let me review that list against the change. It covers cases like documentation updates, logging changes, cosmetic constant modifications, unreachable code paths in virtualized environments, and specific driver types (PCIe switches, SmartNICs, GPU drivers that rely on physical hardware, or PCI teardown callbacks).
The question is, *is* the changed code path unreachable? The code *itself* (the `!device_property_read_bool(...)` check) *will* be executed if the driver probes and firmware loads. However, the *true* branch of that check is highly unlikely to trigger without injecting that specific DT property. Syzkaller *could* theoretically inject software nodes, but it's not a common occurrence. So, even if the check is reached, it's just a boolean check, which seems unlikely to contain any complex logic bugs.
Let me take another look at the code:
```c
if (country_code &&
!device_property_read_bool(adapter->dev,
"marvell,invalid-reg-hint-in-rom") &&
regulatory_hint(wiphy, country_code))
```
This is a very minor addition. Therefore, I will set `WorthFuzzing=false`. It's a small check that is unlikely to trigger a code change, because the DT property is unlikely to be present in normal fuzzing environments. This change appears benign.
|
| 8/2 | 2026/08/27 13:36 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The patch only adds a trivial device property check to skip a regulatory hint during driver initialization. In standard fuzzing environments, this specific device tree property will not be present, meaning the execution flow remains unchanged. Furthermore, the change is too simple to introduce memory corruption or complex logic bugs.",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch only adds a trivial device property check to skip a regulatory hint during driver initialization. In standard fuzzing environments, this specific device tree property will not be present, meaning the execution flow remains unchanged. Furthermore, the change is too simple to introduce memory corruption or complex logic bugs.",
"WorthFuzzing": false
} |
| 9/1 | 2026/08/27 13:36 | 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) |
|---|