| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/08/15 08:38 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"KMSANReasoning": "",
"NeedsKMSAN": false,
"Reasoning": "The patch only modifies userspace selftest code in tools/testing/selftests/mm/. It does not make any functional changes to the kernel itself.",
"WorthFuzzing": false
} |
| 1/1 | 2026/08/15 08:38 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit 22a5677c9e29f29e18b0c5de4425084e0ae6d760\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Sat Aug 15 08:38:57 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/tools/testing/selftests/mm/hugetlb-soft-offline.c b/tools/testing/selftests/mm/hugetlb-soft-offline.c\nindex bc202e4ed2bda..86259921d54c0 100644\n--- a/tools/testing/selftests/mm/hugetlb-soft-offline.c\n+++ b/tools/testing/selftests/mm/hugetlb-soft-offline.c\n@@ -23,6 +23,7 @@\n #include \u003csys/types.h\u003e\n \n #include \"kselftest.h\"\n+#include \"vm_util.h\"\n #include \"hugepage_settings.h\"\n \n #ifndef MADV_SOFT_OFFLINE\n@@ -31,6 +32,8 @@\n \n #define EPREFIX \" !!! \"\n \n+#define ENABLE_SOFT_OFFLINE_PATH \"/proc/sys/vm/enable_soft_offline\"\n+\n static int do_soft_offline(int fd, size_t len, int expect_errno)\n {\n \tchar *filemap = NULL;\n@@ -77,26 +80,12 @@ static int do_soft_offline(int fd, size_t len, int expect_errno)\n \treturn ret;\n }\n \n-static int set_enable_soft_offline(int value)\n-{\n-\tchar cmd[256] = {0};\n-\tFILE *cmdfile = NULL;\n-\n-\tif (value != 0 \u0026\u0026 value != 1)\n-\t\treturn -EINVAL;\n-\n-\tsprintf(cmd, \"echo %d \u003e /proc/sys/vm/enable_soft_offline\", value);\n-\tcmdfile = popen(cmd, \"r\");\n-\n-\tif (cmdfile)\n-\t\tksft_print_msg(\"enable_soft_offline =\u003e %d\\n\", value);\n-\telse {\n-\t\tksft_perror(EPREFIX \"failed to set enable_soft_offline\");\n-\t\treturn errno;\n-\t}\n+static unsigned long orig_enable_soft_offline = -1UL;\n \n-\tpclose(cmdfile);\n-\treturn 0;\n+static void restore_enable_soft_offline(void)\n+{\n+\tif (orig_enable_soft_offline != -1UL)\n+\t\twrite_num(ENABLE_SOFT_OFFLINE_PATH, orig_enable_soft_offline);\n }\n \n static int create_hugetlbfs_file(struct statfs *file_stat)\n@@ -145,10 +134,7 @@ static void test_soft_offline_common(int enable_soft_offline)\n \thugepagesize_kb = file_stat.f_bsize / 1024;\n \tksft_print_msg(\"Hugepagesize is %ldkB\\n\", hugepagesize_kb);\n \n-\tif (set_enable_soft_offline(enable_soft_offline) != 0) {\n-\t\tclose(fd);\n-\t\tksft_exit_fail_msg(\"Failed to set enable_soft_offline\\n\");\n-\t}\n+\twrite_num(ENABLE_SOFT_OFFLINE_PATH, enable_soft_offline);\n \n \tnr_hugepages_before = hugetlb_nr_default_pages();\n \n@@ -192,6 +178,9 @@ int main(int argc, char **argv)\n \n \tksft_set_plan(2);\n \n+\torig_enable_soft_offline = read_num(ENABLE_SOFT_OFFLINE_PATH);\n+\tatexit(restore_enable_soft_offline);\n+\n \ttest_soft_offline_common(1);\n \ttest_soft_offline_common(0);\n \ndiff --git a/tools/testing/selftests/mm/mremap_test.c b/tools/testing/selftests/mm/mremap_test.c\nindex 131d9d6db8679..28f151daabe48 100644\n--- a/tools/testing/selftests/mm/mremap_test.c\n+++ b/tools/testing/selftests/mm/mremap_test.c\n@@ -111,18 +111,17 @@ static unsigned long long get_mmap_min_addr(void)\n \t\treturn addr;\n \n \tfp = fopen(\"/proc/sys/vm/mmap_min_addr\", \"r\");\n-\tif (fp == NULL) {\n-\t\tksft_print_msg(\"Failed to open /proc/sys/vm/mmap_min_addr: %s\\n\",\n-\t\t\tstrerror(errno));\n-\t\texit(KSFT_SKIP);\n-\t}\n+\tif (!fp)\n+\t\tksft_exit_skip(\"Failed to open /proc/sys/vm/mmap_min_addr: %s\\n\",\n+\t\t\t strerror(errno));\n \n \tn_matched = fscanf(fp, \"%llu\", \u0026addr);\n \tif (n_matched != 1) {\n-\t\tksft_print_msg(\"Failed to read /proc/sys/vm/mmap_min_addr: %s\\n\",\n-\t\t\tstrerror(errno));\n+\t\tint err = errno;\n+\n \t\tfclose(fp);\n-\t\texit(KSFT_SKIP);\n+\t\tksft_exit_skip(\"Failed to read /proc/sys/vm/mmap_min_addr: %s\\n\",\n+\t\t\t strerror(err));\n \t}\n \n \tfclose(fp);\n@@ -1164,10 +1163,11 @@ static void run_mremap_test_case(struct test test_case, int *failures,\n \t\t\t\t\t rand_addr);\n \n \tif (remap_time \u003c 0) {\n-\t\tif (test_case.expect_failure)\n-\t\t\tksft_test_result_xfail(\"%s\\n\\tExpected mremap failure\\n\",\n-\t\t\t\t\t test_case.name);\n-\t\telse {\n+\t\tif (test_case.expect_failure) {\n+\t\t\tksft_print_msg(\"%s: expected mremap failure\\n\",\n+\t\t\t\t test_case.name);\n+\t\t\tksft_test_result_xfail(\"%s\\n\", test_case.name);\n+\t\t} else {\n \t\t\tksft_test_result_fail(\"%s\\n\", test_case.name);\n \t\t\t*failures += 1;\n \t\t}\n@@ -1177,11 +1177,13 @@ static void run_mremap_test_case(struct test test_case, int *failures,\n \t\t * was faulted in.\n \t\t */\n \t\tif (threshold_mb == VALIDATION_NO_THRESHOLD ||\n-\t\t test_case.config.region_size \u003c= threshold_mb * _1MB)\n-\t\t\tksft_test_result_pass(\"%s\\n\\tmremap time: %12lldns\\n\",\n-\t\t\t\t\t test_case.name, remap_time);\n-\t\telse\n+\t\t test_case.config.region_size \u003c= threshold_mb * _1MB) {\n+\t\t\tksft_print_msg(\"%s: mremap time: %12lldns\\n\",\n+\t\t\t\t test_case.name, remap_time);\n \t\t\tksft_test_result_pass(\"%s\\n\", test_case.name);\n+\t\t} else {\n+\t\t\tksft_test_result_pass(\"%s\\n\", test_case.name);\n+\t\t}\n \t}\n }\n \n@@ -1250,13 +1252,16 @@ int main(int argc, char **argv)\n \ttime_t t;\n \tFILE *maps_fp;\n \n+\tksft_print_header();\n+\n \tpattern_seed = (unsigned int) time(\u0026t);\n \n \tif (parse_args(argc, argv, \u0026threshold_mb, \u0026pattern_seed) \u003c 0)\n \t\texit(EXIT_FAILURE);\n \n-\tksft_print_msg(\"Test configs:\\n\\tthreshold_mb=%u\\n\\tpattern_seed=%u\\n\\n\",\n-\t\t threshold_mb, pattern_seed);\n+\tksft_print_msg(\"Test configs:\\n\");\n+\tksft_print_msg(\"threshold_mb=%u\\n\", threshold_mb);\n+\tksft_print_msg(\"pattern_seed=%u\\n\", pattern_seed);\n \n \t/*\n \t * set preallocated random array according to test configs; see the\ndiff --git a/tools/testing/selftests/mm/uffd-wp-mremap.c b/tools/testing/selftests/mm/uffd-wp-mremap.c\nindex c973d6722720c..572c2516e874d 100644\n--- a/tools/testing/selftests/mm/uffd-wp-mremap.c\n+++ b/tools/testing/selftests/mm/uffd-wp-mremap.c\n@@ -347,6 +347,8 @@ int main(int argc, char **argv)\n \tstruct thp_settings settings;\n \tint i, j, plan = 0;\n \n+\tksft_print_header();\n+\n \thugepage_save_settings(true, true);\n \n \tcheck_uffd_wp_feature_supported();\n"
} |
| 2/1 | 2026/08/15 08:38 | agent | patch-evaluator |
0mModel:best-expensive Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch only modifies userspace selftest code in tools/testing/selftests/mm/. It does not make any functional changes to the kernel itself.",
"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 22a5677c9e29f29e18b0c5de4425084e0ae6d760
Author: syz-cluster <triage@syzkaller.com>
Date: Sat Aug 15 08:38:57 2026 +0000
syz-cluster: applied patch under review
diff --git a/tools/testing/selftests/mm/hugetlb-soft-offline.c b/tools/testing/selftests/mm/hugetlb-soft-offline.c
index bc202e4ed2bda..86259921d54c0 100644
--- a/tools/testing/selftests/mm/hugetlb-soft-offline.c
+++ b/tools/testing/selftests/mm/hugetlb-soft-offline.c
@@ -23,6 +23,7 @@
#include <sys/types.h>
#include "kselftest.h"
+#include "vm_util.h"
#include "hugepage_settings.h"
#ifndef MADV_SOFT_OFFLINE
@@ -31,6 +32,8 @@
#define EPREFIX " !!! "
+#define ENABLE_SOFT_OFFLINE_PATH "/proc/sys/vm/enable_soft_offline"
+
static int do_soft_offline(int fd, size_t len, int expect_errno)
{
char *filemap = NULL;
@@ -77,26 +80,12 @@ static int do_soft_offline(int fd, size_t len, int expect_errno)
return ret;
}
-static int set_enable_soft_offline(int value)
-{
- char cmd[256] = {0};
- FILE *cmdfile = NULL;
-
- if (value != 0 && value != 1)
- return -EINVAL;
-
- sprintf(cmd, "echo %d > /proc/sys/vm/enable_soft_offline", value);
- cmdfile = popen(cmd, "r");
-
- if (cmdfile)
- ksft_print_msg("enable_soft_offline => %d\n", value);
- else {
- ksft_perror(EPREFIX "failed to set enable_soft_offline");
- return errno;
- }
+static unsigned long orig_enable_soft_offline = -1UL;
- pclose(cmdfile);
- return 0;
+static void restore_enable_soft_offline(void)
+{
+ if (orig_enable_soft_offline != -1UL)
+ write_num(ENABLE_SOFT_OFFLINE_PATH, orig_enable_soft_offline);
}
static int create_hugetlbfs_file(struct statfs *file_stat)
@@ -145,10 +134,7 @@ static void test_soft_offline_common(int enable_soft_offline)
hugepagesize_kb = file_stat.f_bsize / 1024;
ksft_print_msg("Hugepagesize is %ldkB\n", hugepagesize_kb);
- if (set_enable_soft_offline(enable_soft_offline) != 0) {
- close(fd);
- ksft_exit_fail_msg("Failed to set enable_soft_offline\n");
- }
+ write_num(ENABLE_SOFT_OFFLINE_PATH, enable_soft_offline);
nr_hugepages_before = hugetlb_nr_default_pages();
@@ -192,6 +178,9 @@ int main(int argc, char **argv)
ksft_set_plan(2);
+ orig_enable_soft_offline = read_num(ENABLE_SOFT_OFFLINE_PATH);
+ atexit(restore_enable_soft_offline);
+
test_soft_offline_common(1);
test_soft_offline_common(0);
diff --git a/tools/testing/selftests/mm/mremap_test.c b/tools/testing/selftests/mm/mremap_test.c
index 131d9d6db8679..28f151daabe48 100644
--- a/tools/testing/selftests/mm/mremap_test.c
+++ b/tools/testing/selftests/mm/mremap_test.c
@@ -111,18 +111,17 @@ static unsigned long long get_mmap_min_addr(void)
return addr;
fp = fopen("/proc/sys/vm/mmap_min_addr", "r");
- if (fp == NULL) {
- ksft_print_msg("Failed to open /proc/sys/vm/mmap_min_addr: %s\n",
- strerror(errno));
- exit(KSFT_SKIP);
- }
+ if (!fp)
+ ksft_exit_skip("Failed to open /proc/sys/vm/mmap_min_addr: %s\n",
+ strerror(errno));
n_matched = fscanf(fp, "%llu", &addr);
if (n_matched != 1) {
- ksft_print_msg("Failed to read /proc/sys/vm/mmap_min_addr: %s\n",
- strerror(errno));
+ int err = errno;
+
fclose(fp);
- exit(KSFT_SKIP);
+ ksft_exit_skip("Failed to read /proc/sys/vm/mmap_min_addr: %s\n",
+ strerror(err));
}
fclose(fp);
@@ -1164,10 +1163,11 @@ static void run_mremap_test_case(struct test test_case, int *failures,
rand_addr);
if (remap_time < 0) {
- if (test_case.expect_failure)
- ksft_test_result_xfail("%s\n\tExpected mremap failure\n",
- test_case.name);
- else {
+ if (test_case.expect_failure) {
+ ksft_print_msg("%s: expected mremap failure\n",
+ test_case.name);
+ ksft_test_result_xfail("%s\n", test_case.name);
+ } else {
ksft_test_result_fail("%s\n", test_case.name);
*failures += 1;
}
@@ -1177,11 +1177,13 @@ static void run_mremap_test_case(struct test test_case, int *failures,
* was faulted in.
*/
if (threshold_mb == VALIDATION_NO_THRESHOLD ||
- test_case.config.region_size <= threshold_mb * _1MB)
- ksft_test_result_pass("%s\n\tmremap time: %12lldns\n",
- test_case.name, remap_time);
- else
+ test_case.config.region_size <= threshold_mb * _1MB) {
+ ksft_print_msg("%s: mremap time: %12lldns\n",
+ test_case.name, remap_time);
ksft_test_result_pass("%s\n", test_case.name);
+ } else {
+ ksft_test_result_pass("%s\n", test_case.name);
+ }
}
}
@@ -1250,13 +1252,16 @@ int main(int argc, char **argv)
time_t t;
FILE *maps_fp;
+ ksft_print_header();
+
pattern_seed = (unsigned int) time(&t);
if (parse_args(argc, argv, &threshold_mb, &pattern_seed) < 0)
exit(EXIT_FAILURE);
- ksft_print_msg("Test configs:\n\tthreshold_mb=%u\n\tpattern_seed=%u\n\n",
- threshold_mb, pattern_seed);
+ ksft_print_msg("Test configs:\n");
+ ksft_print_msg("threshold_mb=%u\n", threshold_mb);
+ ksft_print_msg("pattern_seed=%u\n", pattern_seed);
/*
* set preallocated random array according to test configs; see the
diff --git a/tools/testing/selftests/mm/uffd-wp-mremap.c b/tools/testing/selftests/mm/uffd-wp-mremap.c
index c973d6722720c..572c2516e874d 100644
--- a/tools/testing/selftests/mm/uffd-wp-mremap.c
+++ b/tools/testing/selftests/mm/uffd-wp-mremap.c
@@ -347,6 +347,8 @@ int main(int argc, char **argv)
struct thp_settings settings;
int i, j, plan = 0;
+ ksft_print_header();
+
hugepage_save_settings(true, true);
check_uffd_wp_feature_supported();
|
| 3/2 | 2026/08/15 08:38 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 4101 output: 63 thoughts: 325 Thoughts: **My Assessment of the Patch's Impact** Okay, so I've got this patch here that touches three files inside the `tools/testing/selftests/mm/` directory: `hugetlb-soft-offline.c`, `mremap_test.c`, and `uffd-wp-mremap.c`. Right off the bat, I know these are *selftests*. My expert intuition kicks in; selftests are there to, well, test things, but *they* aren't kernel code. They live in user space. The changes here are contained within that testing framework. This means, importantly, that this patch *doesn't* actually alter the kernel's functional execution path. So, no need to waste time fuzzing this one. Let's do a quick double-check though. In `hugetlb-soft-offline.c`, it looks like they're including `vm_util.h`, swapping out `set_enable_soft_offline` with `write_num` and `read_num`, and adding a `restore_enable_soft_offline` using `atexit`. Fine, that's just restructuring that test. Moving on to `mremap_test.c`, I see they're replacing `exit(KSFT_SKIP)` with `ksft_exit_skip`, tweaking some of those `ksft_test_result` messages, and adding `ksft_print_header()`. Again, entirely within the testing infrastructure. Finally, `uffd-wp-mremap.c` also gets the `ksft_print_header()`. Yup, it's all within user-space test code. There are no changes to any functionality in the kernel. So, no, this is not a candidate for fuzzing. I can safely set the `WorthFuzzing` flag to `false`. Time to move on and call the set-results function. |
| 4/2 | 2026/08/15 08:39 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The patch only modifies userspace selftest code in tools/testing/selftests/mm/. It does not make any functional changes to the kernel itself.",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch only modifies userspace selftest code in tools/testing/selftests/mm/. It does not make any functional changes to the kernel itself.",
"WorthFuzzing": false
} |
| 5/1 | 2026/08/15 08:39 | 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) |
|---|