| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/06/30 23:12 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch only modifies early boot initialization code (functions marked with __init, such as kasan_init, hugetlb_bootmem_set_nodes, early_calculate_totalpages). These functions are executed exactly once during system startup and cannot be triggered or reached via user-space fuzzing.",
"WorthFuzzing": false
} |
| 1/1 | 2026/06/30 23:12 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit 34e87cfcffd365bb86bbfc52bdd673d9b9b3471b\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Tue Jun 30 23:12:37 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/arch/arm/mm/kasan_init.c b/arch/arm/mm/kasan_init.c\nindex c6625e808bf85e..1f7c74c5df9e98 100644\n--- a/arch/arm/mm/kasan_init.c\n+++ b/arch/arm/mm/kasan_init.c\n@@ -262,12 +262,6 @@ void __init kasan_init(void)\n \t\t\t\t\u0026pa_start, \u0026pa_end, \u0026arm_lowmem_limit);\n \t\t\tend = __va(arm_lowmem_limit);\n \t\t}\n-\t\tif (start \u003e= end) {\n-\t\t\tpr_info(\"Skipping invalid memory block %pa-%pa (virtual %p-%p)\\n\",\n-\t\t\t\t\u0026pa_start, \u0026pa_end, start, end);\n-\t\t\tcontinue;\n-\t\t}\n-\n \t\tcreate_mapping(start, end);\n \t}\n \ndiff --git a/arch/arm64/mm/kasan_init.c b/arch/arm64/mm/kasan_init.c\nindex 3fcad956fdf7cb..45fbdce684c89c 100644\n--- a/arch/arm64/mm/kasan_init.c\n+++ b/arch/arm64/mm/kasan_init.c\n@@ -353,9 +353,6 @@ static void __init kasan_init_shadow(void)\n \t\tvoid *start = (void *)__phys_to_virt(pa_start);\n \t\tvoid *end = (void *)__phys_to_virt(pa_end);\n \n-\t\tif (start \u003e= end)\n-\t\t\tbreak;\n-\n \t\tkasan_map_populate((unsigned long)kasan_mem_to_shadow(start),\n \t\t\t\t (unsigned long)kasan_mem_to_shadow(end),\n \t\t\t\t early_pfn_to_nid(virt_to_pfn(start)));\ndiff --git a/arch/loongarch/mm/kasan_init.c b/arch/loongarch/mm/kasan_init.c\nindex 0fc02ca0645738..92ca0ba864061e 100644\n--- a/arch/loongarch/mm/kasan_init.c\n+++ b/arch/loongarch/mm/kasan_init.c\n@@ -305,9 +305,6 @@ void __init kasan_init(void)\n \t\tvoid *start = (void *)phys_to_virt(pa_start);\n \t\tvoid *end = (void *)phys_to_virt(pa_end);\n \n-\t\tif (start \u003e= end)\n-\t\t\tbreak;\n-\n \t\tkasan_map_populate((unsigned long)mem_to_shadow(start),\n \t\t\t(unsigned long)mem_to_shadow(end), NUMA_NO_NODE);\n \t}\ndiff --git a/arch/powerpc/mm/kasan/init_book3e_64.c b/arch/powerpc/mm/kasan/init_book3e_64.c\nindex 0d3a73d6d4b0bb..0ed372fb8b096e 100644\n--- a/arch/powerpc/mm/kasan/init_book3e_64.c\n+++ b/arch/powerpc/mm/kasan/init_book3e_64.c\n@@ -68,9 +68,6 @@ static void __init kasan_init_phys_region(void *start, void *end)\n \tunsigned long k_start, k_end, k_cur;\n \tvoid *va;\n \n-\tif (start \u003e= end)\n-\t\treturn;\n-\n \tk_start = ALIGN_DOWN((unsigned long)kasan_mem_to_shadow(start), PAGE_SIZE);\n \tk_end = ALIGN((unsigned long)kasan_mem_to_shadow(end), PAGE_SIZE);\n \ndiff --git a/arch/powerpc/mm/kasan/init_book3s_64.c b/arch/powerpc/mm/kasan/init_book3s_64.c\nindex dcafa641804c0a..ccfbfb89463766 100644\n--- a/arch/powerpc/mm/kasan/init_book3s_64.c\n+++ b/arch/powerpc/mm/kasan/init_book3s_64.c\n@@ -24,9 +24,6 @@ static void __init kasan_init_phys_region(void *start, void *end)\n \tunsigned long k_start, k_end, k_cur;\n \tvoid *va;\n \n-\tif (start \u003e= end)\n-\t\treturn;\n-\n \tk_start = ALIGN_DOWN((unsigned long)kasan_mem_to_shadow(start), PAGE_SIZE);\n \tk_end = ALIGN((unsigned long)kasan_mem_to_shadow(end), PAGE_SIZE);\n \ndiff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c\nindex 5b1b3c88b4d130..eb93c2ac05a682 100644\n--- a/arch/riscv/mm/init.c\n+++ b/arch/riscv/mm/init.c\n@@ -1229,8 +1229,6 @@ static void __init create_linear_mapping_page_table(void)\n \n \t/* Map all memory banks in the linear mapping */\n \tfor_each_mem_range(i, \u0026start, \u0026end) {\n-\t\tif (start \u003e= end)\n-\t\t\tbreak;\n \t\tif (start \u003c= __pa(PAGE_OFFSET) \u0026\u0026\n \t\t __pa(PAGE_OFFSET) \u003c end)\n \t\t\tstart = __pa(PAGE_OFFSET);\ndiff --git a/arch/riscv/mm/kasan_init.c b/arch/riscv/mm/kasan_init.c\nindex c4a2a9e5586e75..1f3aa9611187f6 100644\n--- a/arch/riscv/mm/kasan_init.c\n+++ b/arch/riscv/mm/kasan_init.c\n@@ -512,9 +512,6 @@ void __init kasan_init(void)\n \t\tvoid *start = (void *)__va(p_start);\n \t\tvoid *end = (void *)__va(p_end);\n \n-\t\tif (start \u003e= end)\n-\t\t\tbreak;\n-\n \t\tkasan_populate(kasan_mem_to_shadow(start), kasan_mem_to_shadow(end));\n \t}\n \ndiff --git a/mm/hugetlb.c b/mm/hugetlb.c\nindex 571212b80835ec..4f7020962486d9 100644\n--- a/mm/hugetlb.c\n+++ b/mm/hugetlb.c\n@@ -4444,15 +4444,12 @@ hugetlb_early_param(\"default_hugepagesz\", default_hugepagesz_setup);\n void __init hugetlb_bootmem_set_nodes(void)\n {\n \tint i, nid;\n-\tunsigned long start_pfn, end_pfn;\n \n \tif (!nodes_empty(hugetlb_bootmem_nodes))\n \t\treturn;\n \n-\tfor_each_mem_pfn_range(i, MAX_NUMNODES, \u0026start_pfn, \u0026end_pfn, \u0026nid) {\n-\t\tif (end_pfn \u003e start_pfn)\n-\t\t\tnode_set(nid, hugetlb_bootmem_nodes);\n-\t}\n+\tfor_each_mem_pfn_range(i, MAX_NUMNODES, NULL, NULL, \u0026nid)\n+\t\tnode_set(nid, hugetlb_bootmem_nodes);\n }\n \n void __init hugetlb_bootmem_alloc(void)\ndiff --git a/mm/mm_init.c b/mm/mm_init.c\nindex 0f64909e8d20e2..17498a13eb9924 100644\n--- a/mm/mm_init.c\n+++ b/mm/mm_init.c\n@@ -332,8 +332,7 @@ static unsigned long __init early_calculate_totalpages(void)\n \t\tunsigned long pages = end_pfn - start_pfn;\n \n \t\ttotalpages += pages;\n-\t\tif (pages)\n-\t\t\tnode_set_state(nid, N_MEMORY);\n+\t\tnode_set_state(nid, N_MEMORY);\n \t}\n \treturn totalpages;\n }\n"
} |
| 2/1 | 2026/06/30 23:12 | agent | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch only modifies early boot initialization code (functions marked with __init, such as kasan_init, hugetlb_bootmem_set_nodes, early_calculate_totalpages). These functions are executed exactly once during system startup and cannot be triggered or reached via user-space 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). 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. 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. Do not list too generic configs (we already have them enabled). Only list those that specifically cover the modified code. 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 34e87cfcffd365bb86bbfc52bdd673d9b9b3471b
Author: syz-cluster <triage@syzkaller.com>
Date: Tue Jun 30 23:12:37 2026 +0000
syz-cluster: applied patch under review
diff --git a/arch/arm/mm/kasan_init.c b/arch/arm/mm/kasan_init.c
index c6625e808bf85e..1f7c74c5df9e98 100644
--- a/arch/arm/mm/kasan_init.c
+++ b/arch/arm/mm/kasan_init.c
@@ -262,12 +262,6 @@ void __init kasan_init(void)
&pa_start, &pa_end, &arm_lowmem_limit);
end = __va(arm_lowmem_limit);
}
- if (start >= end) {
- pr_info("Skipping invalid memory block %pa-%pa (virtual %p-%p)\n",
- &pa_start, &pa_end, start, end);
- continue;
- }
-
create_mapping(start, end);
}
diff --git a/arch/arm64/mm/kasan_init.c b/arch/arm64/mm/kasan_init.c
index 3fcad956fdf7cb..45fbdce684c89c 100644
--- a/arch/arm64/mm/kasan_init.c
+++ b/arch/arm64/mm/kasan_init.c
@@ -353,9 +353,6 @@ static void __init kasan_init_shadow(void)
void *start = (void *)__phys_to_virt(pa_start);
void *end = (void *)__phys_to_virt(pa_end);
- if (start >= end)
- break;
-
kasan_map_populate((unsigned long)kasan_mem_to_shadow(start),
(unsigned long)kasan_mem_to_shadow(end),
early_pfn_to_nid(virt_to_pfn(start)));
diff --git a/arch/loongarch/mm/kasan_init.c b/arch/loongarch/mm/kasan_init.c
index 0fc02ca0645738..92ca0ba864061e 100644
--- a/arch/loongarch/mm/kasan_init.c
+++ b/arch/loongarch/mm/kasan_init.c
@@ -305,9 +305,6 @@ void __init kasan_init(void)
void *start = (void *)phys_to_virt(pa_start);
void *end = (void *)phys_to_virt(pa_end);
- if (start >= end)
- break;
-
kasan_map_populate((unsigned long)mem_to_shadow(start),
(unsigned long)mem_to_shadow(end), NUMA_NO_NODE);
}
diff --git a/arch/powerpc/mm/kasan/init_book3e_64.c b/arch/powerpc/mm/kasan/init_book3e_64.c
index 0d3a73d6d4b0bb..0ed372fb8b096e 100644
--- a/arch/powerpc/mm/kasan/init_book3e_64.c
+++ b/arch/powerpc/mm/kasan/init_book3e_64.c
@@ -68,9 +68,6 @@ static void __init kasan_init_phys_region(void *start, void *end)
unsigned long k_start, k_end, k_cur;
void *va;
- if (start >= end)
- return;
-
k_start = ALIGN_DOWN((unsigned long)kasan_mem_to_shadow(start), PAGE_SIZE);
k_end = ALIGN((unsigned long)kasan_mem_to_shadow(end), PAGE_SIZE);
diff --git a/arch/powerpc/mm/kasan/init_book3s_64.c b/arch/powerpc/mm/kasan/init_book3s_64.c
index dcafa641804c0a..ccfbfb89463766 100644
--- a/arch/powerpc/mm/kasan/init_book3s_64.c
+++ b/arch/powerpc/mm/kasan/init_book3s_64.c
@@ -24,9 +24,6 @@ static void __init kasan_init_phys_region(void *start, void *end)
unsigned long k_start, k_end, k_cur;
void *va;
- if (start >= end)
- return;
-
k_start = ALIGN_DOWN((unsigned long)kasan_mem_to_shadow(start), PAGE_SIZE);
k_end = ALIGN((unsigned long)kasan_mem_to_shadow(end), PAGE_SIZE);
diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
index 5b1b3c88b4d130..eb93c2ac05a682 100644
--- a/arch/riscv/mm/init.c
+++ b/arch/riscv/mm/init.c
@@ -1229,8 +1229,6 @@ static void __init create_linear_mapping_page_table(void)
/* Map all memory banks in the linear mapping */
for_each_mem_range(i, &start, &end) {
- if (start >= end)
- break;
if (start <= __pa(PAGE_OFFSET) &&
__pa(PAGE_OFFSET) < end)
start = __pa(PAGE_OFFSET);
diff --git a/arch/riscv/mm/kasan_init.c b/arch/riscv/mm/kasan_init.c
index c4a2a9e5586e75..1f3aa9611187f6 100644
--- a/arch/riscv/mm/kasan_init.c
+++ b/arch/riscv/mm/kasan_init.c
@@ -512,9 +512,6 @@ void __init kasan_init(void)
void *start = (void *)__va(p_start);
void *end = (void *)__va(p_end);
- if (start >= end)
- break;
-
kasan_populate(kasan_mem_to_shadow(start), kasan_mem_to_shadow(end));
}
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 571212b80835ec..4f7020962486d9 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -4444,15 +4444,12 @@ hugetlb_early_param("default_hugepagesz", default_hugepagesz_setup);
void __init hugetlb_bootmem_set_nodes(void)
{
int i, nid;
- unsigned long start_pfn, end_pfn;
if (!nodes_empty(hugetlb_bootmem_nodes))
return;
- for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) {
- if (end_pfn > start_pfn)
- node_set(nid, hugetlb_bootmem_nodes);
- }
+ for_each_mem_pfn_range(i, MAX_NUMNODES, NULL, NULL, &nid)
+ node_set(nid, hugetlb_bootmem_nodes);
}
void __init hugetlb_bootmem_alloc(void)
diff --git a/mm/mm_init.c b/mm/mm_init.c
index 0f64909e8d20e2..17498a13eb9924 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -332,8 +332,7 @@ static unsigned long __init early_calculate_totalpages(void)
unsigned long pages = end_pfn - start_pfn;
totalpages += pages;
- if (pages)
- node_set_state(nid, N_MEMORY);
+ node_set_state(nid, N_MEMORY);
}
return totalpages;
}
|
| 3/2 | 2026/06/30 23:12 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 3850 output: 22 thoughts: 1021 Thoughts: **Patch Analysis: Redundant Checks in Early Boot Code** Okay, so I'm looking at a patch that removes `if (start >= end)` or `if (end_pfn > start_pfn)` checks in various architecture-specific memory initialization code, specifically within KASAN initialization across multiple architectures (ARM, ARM64, LoongArch, PowerPC, RISC-V), and also in `mm/hugetlb.c` and `mm/mm_init.c`. The patch originated from `syz-cluster <triage@syzkaller.com>`, but it's already been applied. My initial thought is to assess if this needs any fuzzing attention. The changes are straightforward: redundant checks are being removed. I see these checks are within `__init` functions. This means they are only executed during the very early boot process. Syzkaller, in its current setup, primarily focuses on syscalls and interactions that occur after the system has initialized and is running. It's highly unlikely that this would be reachable or exploitable via the usual fuzzing methods. Looking closer, the patch is just removing checks that are always false or that would only trigger if the input parameters were wrong, but since the surrounding code guarantees that `start < end` or `start_pfn < end_pfn`, it appears these checks were indeed redundant. I need to confirm these functions can *only* be called during early boot. I'm seeing `kasan_init`, `create_linear_mapping_page_table`, `hugetlb_bootmem_set_nodes`, and `early_calculate_totalpages` are all `__init` functions. These functions and the KASAN initialization routines are all marked as such. The specific `kasan_init_phys_region` in powerpc is also `__init`. I'm confident these changes are confined to the early boot stage. Since these functions are not reachable through syscalls or user-space interactions, fuzzing isn't a consideration here. I'm going to set `WorthFuzzing` to `false`. Let me quickly double-check with grepper, just to be sure, and I will be confident in my assessment. |
| 4/2 | 2026/06/30 23:12 | tool | grepper |
0mArgs:{
"Expression": "kasan_init_phys_region"
}Results: {
"Output": "arch/powerpc/mm/kasan/init_book3e_64.c=32=static int __init kasan_map_kernel_page(unsigned long ea, unsigned long pa, pgprot_t prot)\n--\narch/powerpc/mm/kasan/init_book3e_64.c-65-\narch/powerpc/mm/kasan/init_book3e_64.c:66:static void __init kasan_init_phys_region(void *start, void *end)\narch/powerpc/mm/kasan/init_book3e_64.c-67-{\n--\narch/powerpc/mm/kasan/init_book3e_64.c=105=void __init kasan_init(void)\n--\narch/powerpc/mm/kasan/init_book3e_64.c-111-\tfor_each_mem_range(i, \u0026start, \u0026end)\narch/powerpc/mm/kasan/init_book3e_64.c:112:\t\tkasan_init_phys_region(phys_to_virt(start), phys_to_virt(end));\narch/powerpc/mm/kasan/init_book3e_64.c-113-\n--\narch/powerpc/mm/kasan/init_book3s_64.c-21-\narch/powerpc/mm/kasan/init_book3s_64.c:22:static void __init kasan_init_phys_region(void *start, void *end)\narch/powerpc/mm/kasan/init_book3s_64.c-23-{\n--\narch/powerpc/mm/kasan/init_book3s_64.c=35=void __init kasan_init(void)\n--\narch/powerpc/mm/kasan/init_book3s_64.c-59-\tfor_each_mem_range(i, \u0026start, \u0026end)\narch/powerpc/mm/kasan/init_book3s_64.c:60:\t\tkasan_init_phys_region(phys_to_virt(start), phys_to_virt(end));\narch/powerpc/mm/kasan/init_book3s_64.c-61-\n"
} |
| 5/2 | 2026/06/30 23:12 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 5944 output: 93 thoughts: 38 Thoughts: **My Assessment of the Fuzzing Applicability** Okay, so I've examined the code change, and my immediate conclusion is that this section really boils down to `__init` functions. That's the key here. Given that we're talking about initial boot code, it becomes clear that these changes are happening very early in the system startup. Therefore, despite the potential impact of changes made to init functions, I will be setting `WorthFuzzing` to `false`. The primary reason is that this particular section of the boot process is simply not accessible or reachable through any standard user-space fuzzing techniques. Trying to target this part with those tools would be a futile effort, given the constraints of the execution environment at that stage. We should focus our fuzzing efforts on code more amenable to this strategy. |
| 6/2 | 2026/06/30 23:12 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The patch only modifies early boot initialization code (functions marked with __init, such as kasan_init, hugetlb_bootmem_set_nodes, early_calculate_totalpages). These functions are executed exactly once during system startup and cannot be triggered or reached via user-space fuzzing.",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch only modifies early boot initialization code (functions marked with __init, such as kasan_init, hugetlb_bootmem_set_nodes, early_calculate_totalpages). These functions are executed exactly once during system startup and cannot be triggered or reached via user-space fuzzing.",
"WorthFuzzing": false
} |
| Total Calls | Total Tokens | Avg Tokens | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|
| Total Calls | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|