| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/08/27 08:05 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"KMSANReasoning": "",
"NeedsKMSAN": false,
"Reasoning": "The patch modifies early boot memory initialization logic (specifically, moving VMEMMAP cache flushing to a new arch_post_sparse_init hook called from sparse_init). These are __init functions executed once during kernel boot and cannot be triggered or influenced by userspace fuzzing.",
"WorthFuzzing": false
} |
| 1/1 | 2026/08/27 08:05 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit d42eb28434926b6e2d9746da9eafe31ddc269acc\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Thu Aug 27 08:05:54 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c\nindex decd7df40fa42..200a058e80ca7 100644\n--- a/arch/riscv/mm/init.c\n+++ b/arch/riscv/mm/init.c\n@@ -19,6 +19,7 @@\n #include \u003clinux/set_memory.h\u003e\n #include \u003clinux/dma-map-ops.h\u003e\n #include \u003clinux/crash_dump.h\u003e\n+#include \u003clinux/cacheflush.h\u003e\n #include \u003clinux/hugetlb.h\u003e\n #include \u003clinux/kfence.h\u003e\n #include \u003clinux/execmem.h\u003e\n@@ -1325,14 +1326,18 @@ void __init misc_mem_init(void)\n {\n \tearly_memtest(min_low_pfn \u003c\u003c PAGE_SHIFT, max_low_pfn \u003c\u003c PAGE_SHIFT);\n \tarch_numa_init();\n-#ifdef CONFIG_SPARSEMEM_VMEMMAP\n-\t/* The entire VMEMMAP region has been populated. Flush TLB for this region */\n-\tlocal_flush_tlb_kernel_range(VMEMMAP_START, VMEMMAP_END);\n-#endif\n \tarch_reserve_crashkernel();\n \tmemblock_dump_all();\n }\n \n+#ifdef CONFIG_SPARSEMEM_VMEMMAP\n+void __init arch_post_sparse_init(void)\n+{\n+\t/* The entire VMEMMAP region has been populated by sparse_init(). */\n+\tflush_cache_vmap_early(VMEMMAP_START, VMEMMAP_END);\n+}\n+#endif\n+\n #ifdef CONFIG_SPARSEMEM_VMEMMAP\n void __meminit vmemmap_set_pmd(pmd_t *pmd, void *p, int node,\n \t\t\t unsigned long addr, unsigned long next)\ndiff --git a/include/linux/mm.h b/include/linux/mm.h\nindex af23453e9dbd0..5a75b69296cdd 100644\n--- a/include/linux/mm.h\n+++ b/include/linux/mm.h\n@@ -46,6 +46,7 @@ struct pt_regs;\n struct folio_batch;\n \n void arch_mm_preinit(void);\n+void arch_post_sparse_init(void);\n void mm_core_init_early(void);\n void mm_core_init(void);\n void init_mm_internals(void);\ndiff --git a/mm/sparse.c b/mm/sparse.c\nindex effdac6b0ab13..ecf1b2510fb3b 100644\n--- a/mm/sparse.c\n+++ b/mm/sparse.c\n@@ -309,6 +309,10 @@ void __weak __meminit vmemmap_populate_print_last(void)\n {\n }\n \n+void __weak __init arch_post_sparse_init(void)\n+{\n+}\n+\n static void *sparse_usagebuf __meminitdata;\n static void *sparse_usagebuf_end __meminitdata;\n \n@@ -446,4 +450,5 @@ void __init sparse_init(void)\n \t/* cover the last node */\n \tsparse_init_nid(nid_begin, pnum_begin, pnum_end, map_count);\n \tvmemmap_populate_print_last();\n+\tarch_post_sparse_init();\n }\n"
} |
| 2/1 | 2026/08/27 08:05 | agent | patch-evaluator |
0mModel:best-expensive Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch modifies early boot memory initialization logic (specifically, moving VMEMMAP cache flushing to a new arch_post_sparse_init hook called from sparse_init). These are __init functions executed once during kernel boot and cannot be triggered or influenced by userspace fuzzing.",
"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 d42eb28434926b6e2d9746da9eafe31ddc269acc
Author: syz-cluster <triage@syzkaller.com>
Date: Thu Aug 27 08:05:54 2026 +0000
syz-cluster: applied patch under review
diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
index decd7df40fa42..200a058e80ca7 100644
--- a/arch/riscv/mm/init.c
+++ b/arch/riscv/mm/init.c
@@ -19,6 +19,7 @@
#include <linux/set_memory.h>
#include <linux/dma-map-ops.h>
#include <linux/crash_dump.h>
+#include <linux/cacheflush.h>
#include <linux/hugetlb.h>
#include <linux/kfence.h>
#include <linux/execmem.h>
@@ -1325,14 +1326,18 @@ void __init misc_mem_init(void)
{
early_memtest(min_low_pfn << PAGE_SHIFT, max_low_pfn << PAGE_SHIFT);
arch_numa_init();
-#ifdef CONFIG_SPARSEMEM_VMEMMAP
- /* The entire VMEMMAP region has been populated. Flush TLB for this region */
- local_flush_tlb_kernel_range(VMEMMAP_START, VMEMMAP_END);
-#endif
arch_reserve_crashkernel();
memblock_dump_all();
}
+#ifdef CONFIG_SPARSEMEM_VMEMMAP
+void __init arch_post_sparse_init(void)
+{
+ /* The entire VMEMMAP region has been populated by sparse_init(). */
+ flush_cache_vmap_early(VMEMMAP_START, VMEMMAP_END);
+}
+#endif
+
#ifdef CONFIG_SPARSEMEM_VMEMMAP
void __meminit vmemmap_set_pmd(pmd_t *pmd, void *p, int node,
unsigned long addr, unsigned long next)
diff --git a/include/linux/mm.h b/include/linux/mm.h
index af23453e9dbd0..5a75b69296cdd 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -46,6 +46,7 @@ struct pt_regs;
struct folio_batch;
void arch_mm_preinit(void);
+void arch_post_sparse_init(void);
void mm_core_init_early(void);
void mm_core_init(void);
void init_mm_internals(void);
diff --git a/mm/sparse.c b/mm/sparse.c
index effdac6b0ab13..ecf1b2510fb3b 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -309,6 +309,10 @@ void __weak __meminit vmemmap_populate_print_last(void)
{
}
+void __weak __init arch_post_sparse_init(void)
+{
+}
+
static void *sparse_usagebuf __meminitdata;
static void *sparse_usagebuf_end __meminitdata;
@@ -446,4 +450,5 @@ void __init sparse_init(void)
/* cover the last node */
sparse_init_nid(nid_begin, pnum_begin, pnum_end, map_count);
vmemmap_populate_print_last();
+ arch_post_sparse_init();
}
|
| 3/2 | 2026/08/27 08:05 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 2657 output: 87 thoughts: 348 Thoughts: **My Assessment of this Patch** Okay, so this patch introduces a new weak function, `arch_post_sparse_init()`, within the memory management subsystem. Essentially, it's adding a new hook that gets called after `sparse_init()` completes. Looking specifically at the RISC-V implementation, `arch_post_sparse_init()` is being used to flush the cache for the VMEMMAP region, which is a key memory mapping during early boot. Notably, this patch also removes a `local_flush_tlb_kernel_range()` call from `misc_mem_init()`. This is all happening during the early boot process, specifically within `__init` functions. The changes are focused on initialization and how memory is flushed and mapped *before* the system gets to a point where user-space can really do much of anything. My initial thought is that this is *not* something that's directly fuzzable from userspace. There's no new functionality exposed that a fuzzer could directly trigger or manipulate. It's fundamentally about how the memory is laid out and handled during the kernel's very first steps. Let's do a quick sanity check to be sure, though. `arch_post_sparse_init()` is called from `sparse_init()`, which in turn, is part of `mm_core_init()` or a similar core memory initialization routine, all early in the boot sequence. It's definitely an initialization fix, a refactoring of sorts in terms of *when* the cache flush happens. This confirms my original assessment. No, this isn't something that presents a fuzzing target. Therefore, my recommendation is `WorthFuzzing=false`. The patch modifies early boot memory initialization logic (specifically, moving VMEMMAP cache flushing to a new `arch_post_sparse_init` hook called from `sparse_init`). These are `__init` functions executed once during kernel boot and cannot be triggered or influenced by userspace fuzzing. |
| 4/2 | 2026/08/27 08:06 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The patch modifies early boot memory initialization logic (specifically, moving VMEMMAP cache flushing to a new arch_post_sparse_init hook called from sparse_init). These are __init functions executed once during kernel boot and cannot be triggered or influenced by userspace fuzzing.",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch modifies early boot memory initialization logic (specifically, moving VMEMMAP cache flushing to a new arch_post_sparse_init hook called from sparse_init). These are __init functions executed once during kernel boot and cannot be triggered or influenced by userspace fuzzing.",
"WorthFuzzing": false
} |
| 5/1 | 2026/08/27 08:06 | 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) |
|---|