AI Trajectory


Trajectory: (Expand/Collapse All)
Seq Timestamp Type Name Duration
0/0 2026/09/04 10:06 flow patch-triage
0m Args:
null

Results:
{
  "EnableConfigs": null,
  "FocusSymbols": [],
  "KMSANReasoning": "",
  "NeedsKMSAN": false,
  "Reasoning": "The patch is a header refactoring that separates kernel-internal AT_VECTOR_SIZE_ARCH macros from UAPI headers into internal asm headers and centralizes AT_VECTOR_SIZE in include/linux/auxvec.h. No executable C code, data structures, constants, assertions, or runtime logic are altered.",
  "WorthFuzzing": false
}

1/1 2026/09/04 10:06 action read-patch-diff
0m Args:
null

Results:
{
  "PatchDiff": "commit d566df05c8131467e4edb1ac784fe7f9718a5215\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate:   Fri Sep 4 10:06:09 2026 +0000\n\n    syz-cluster: applied patch under review\n\ndiff --git a/MAINTAINERS b/MAINTAINERS\nindex 3a19da74d00c9..6974f8dad1e9a 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -9808,13 +9808,18 @@ L:\tlinux-mm@kvack.org\n S:\tSupported\n T:\tgit git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/execve\n F:\tDocumentation/userspace-api/ELF.rst\n+F:\tarch/*/include/asm/auxvec.h\n+F:\tarch/*/include/uapi/asm/auxvec.h\n F:\tfs/*binfmt_*.c\n F:\tfs/Kconfig.binfmt\n F:\tfs/exec.c\n F:\tfs/tests/binfmt_*_kunit.c\n F:\tfs/tests/exec_kunit.c\n+F:\tinclude/asm-generic/auxvec.h\n+F:\tinclude/linux/auxvec.h\n F:\tinclude/linux/binfmts.h\n F:\tinclude/linux/elf.h\n+F:\tinclude/uapi/asm-generic/auxvec.h\n F:\tinclude/uapi/linux/auxvec.h\n F:\tinclude/uapi/linux/binfmts.h\n F:\tinclude/uapi/linux/elf.h\ndiff --git a/arch/alpha/include/asm/auxvec.h b/arch/alpha/include/asm/auxvec.h\nnew file mode 100644\nindex 0000000000000..fa90ee4f899c6\n--- /dev/null\n+++ b/arch/alpha/include/asm/auxvec.h\n@@ -0,0 +1,7 @@\n+/* SPDX-License-Identifier: GPL-2.0 */\n+#ifndef __ASM_ALPHA_AUXVEC_H\n+#define __ASM_ALPHA_AUXVEC_H\n+\n+#define AT_VECTOR_SIZE_ARCH 4 /* entries in ARCH_DLINFO */\n+\n+#endif /* __ASM_ALPHA_AUXVEC_H */\ndiff --git a/arch/alpha/include/uapi/asm/auxvec.h b/arch/alpha/include/uapi/asm/auxvec.h\nindex 57cae8780d811..d21b87b6730a4 100644\n--- a/arch/alpha/include/uapi/asm/auxvec.h\n+++ b/arch/alpha/include/uapi/asm/auxvec.h\n@@ -1,6 +1,6 @@\n /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n-#ifndef __ASM_ALPHA_AUXVEC_H\n-#define __ASM_ALPHA_AUXVEC_H\n+#ifndef __UAPI_ASM_ALPHA_AUXVEC_H\n+#define __UAPI_ASM_ALPHA_AUXVEC_H\n \n /* Reserve these numbers for any future use of a VDSO.  */\n #if 0\n@@ -22,6 +22,4 @@\n #define AT_L2_CACHESHAPE\t36\n #define AT_L3_CACHESHAPE\t37\n \n-#define AT_VECTOR_SIZE_ARCH 4 /* entries in ARCH_DLINFO */\n-\n-#endif /* __ASM_ALPHA_AUXVEC_H */\n+#endif /* __UAPI_ASM_ALPHA_AUXVEC_H */\ndiff --git a/arch/arm/include/asm/auxvec.h b/arch/arm/include/asm/auxvec.h\ndeleted file mode 100644\nindex fbd388c462990..0000000000000\n--- a/arch/arm/include/asm/auxvec.h\n+++ /dev/null\n@@ -1 +0,0 @@\n-#include \u003cuapi/asm/auxvec.h\u003e\ndiff --git a/arch/arm64/include/asm/auxvec.h b/arch/arm64/include/asm/auxvec.h\nnew file mode 100644\nindex 0000000000000..de24eaaa06e27\n--- /dev/null\n+++ b/arch/arm64/include/asm/auxvec.h\n@@ -0,0 +1,7 @@\n+/* SPDX-License-Identifier: GPL-2.0 */\n+#ifndef __ASM_AUXVEC_H\n+#define __ASM_AUXVEC_H\n+\n+#define AT_VECTOR_SIZE_ARCH 2 /* entries in ARCH_DLINFO */\n+\n+#endif\ndiff --git a/arch/arm64/include/uapi/asm/auxvec.h b/arch/arm64/include/uapi/asm/auxvec.h\nindex 743c0b84fd30d..fb51e906813a9 100644\n--- a/arch/arm64/include/uapi/asm/auxvec.h\n+++ b/arch/arm64/include/uapi/asm/auxvec.h\n@@ -14,13 +14,11 @@\n  * You should have received a copy of the GNU General Public License\n  * along with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n  */\n-#ifndef __ASM_AUXVEC_H\n-#define __ASM_AUXVEC_H\n+#ifndef __UAPI_ASM_AUXVEC_H\n+#define __UAPI_ASM_AUXVEC_H\n \n /* vDSO location */\n #define AT_SYSINFO_EHDR\t33\n #define AT_MINSIGSTKSZ\t51\t/* stack needed for signal delivery */\n \n-#define AT_VECTOR_SIZE_ARCH 2 /* entries in ARCH_DLINFO */\n-\n #endif\ndiff --git a/arch/loongarch/include/asm/auxvec.h b/arch/loongarch/include/asm/auxvec.h\nnew file mode 100644\nindex 0000000000000..37dd717a3a22b\n--- /dev/null\n+++ b/arch/loongarch/include/asm/auxvec.h\n@@ -0,0 +1,14 @@\n+/* SPDX-License-Identifier: GPL-2.0+ */\n+/*\n+ * Author: Hanlu Li \u003clihanlu@loongson.cn\u003e\n+ *         Huacai Chen \u003cchenhuacai@loongson.cn\u003e\n+ *\n+ * Copyright (C) 2020-2022 Loongson Technology Corporation Limited\n+ */\n+\n+#ifndef __ASM_AUXVEC_H\n+#define __ASM_AUXVEC_H\n+\n+#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */\n+\n+#endif /* __ASM_AUXVEC_H */\ndiff --git a/arch/loongarch/include/uapi/asm/auxvec.h b/arch/loongarch/include/uapi/asm/auxvec.h\nindex 922d9e6b50586..79691c422c7e4 100644\n--- a/arch/loongarch/include/uapi/asm/auxvec.h\n+++ b/arch/loongarch/include/uapi/asm/auxvec.h\n@@ -6,12 +6,10 @@\n  * Copyright (C) 2020-2022 Loongson Technology Corporation Limited\n  */\n \n-#ifndef __ASM_AUXVEC_H\n-#define __ASM_AUXVEC_H\n+#ifndef __UAPI_ASM_AUXVEC_H\n+#define __UAPI_ASM_AUXVEC_H\n \n /* Location of VDSO image. */\n #define AT_SYSINFO_EHDR\t\t33\n \n-#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */\n-\n-#endif /* __ASM_AUXVEC_H */\n+#endif /* __UAPI_ASM_AUXVEC_H */\ndiff --git a/arch/mips/include/asm/auxvec.h b/arch/mips/include/asm/auxvec.h\nnew file mode 100644\nindex 0000000000000..76c445e7890fe\n--- /dev/null\n+++ b/arch/mips/include/asm/auxvec.h\n@@ -0,0 +1,17 @@\n+/* SPDX-License-Identifier: GPL-2.0+ */\n+/*\n+ * Copyright (C) 2015 Imagination Technologies\n+ * Author: Alex Smith \u003calex.smith@imgtec.com\u003e\n+ *\n+ * This program is free software; you can redistribute it and/or modify it\n+ * under the terms of the GNU General Public License as published by the\n+ * Free Software Foundation;  either version 2 of the  License, or (at your\n+ * option) any later version.\n+ */\n+\n+#ifndef __ASM_AUXVEC_H\n+#define __ASM_AUXVEC_H\n+\n+#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */\n+\n+#endif /* __ASM_AUXVEC_H */\ndiff --git a/arch/mips/include/uapi/asm/auxvec.h b/arch/mips/include/uapi/asm/auxvec.h\nindex 612c2c41f60b2..1331ac4d935e3 100644\n--- a/arch/mips/include/uapi/asm/auxvec.h\n+++ b/arch/mips/include/uapi/asm/auxvec.h\n@@ -9,12 +9,10 @@\n  * option) any later version.\n  */\n \n-#ifndef __ASM_AUXVEC_H\n-#define __ASM_AUXVEC_H\n+#ifndef __UAPI_ASM_AUXVEC_H\n+#define __UAPI_ASM_AUXVEC_H\n \n /* Location of VDSO image. */\n #define AT_SYSINFO_EHDR\t\t33\n \n-#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */\n-\n-#endif /* __ASM_AUXVEC_H */\n+#endif /* __UAPI_ASM_AUXVEC_H */\ndiff --git a/arch/powerpc/include/asm/auxvec.h b/arch/powerpc/include/asm/auxvec.h\nnew file mode 100644\nindex 0000000000000..d6c180e9ac2cb\n--- /dev/null\n+++ b/arch/powerpc/include/asm/auxvec.h\n@@ -0,0 +1,7 @@\n+/* SPDX-License-Identifier: GPL-2.0 */\n+#ifndef _ASM_POWERPC_AUXVEC_H\n+#define _ASM_POWERPC_AUXVEC_H\n+\n+#define AT_VECTOR_SIZE_ARCH\t15 /* entries in ARCH_DLINFO */\n+\n+#endif\ndiff --git a/arch/powerpc/include/uapi/asm/auxvec.h b/arch/powerpc/include/uapi/asm/auxvec.h\nindex aa7c162154538..9ab5b6d179296 100644\n--- a/arch/powerpc/include/uapi/asm/auxvec.h\n+++ b/arch/powerpc/include/uapi/asm/auxvec.h\n@@ -1,6 +1,6 @@\n /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n-#ifndef _ASM_POWERPC_AUXVEC_H\n-#define _ASM_POWERPC_AUXVEC_H\n+#ifndef _UAPI_ASM_POWERPC_AUXVEC_H\n+#define _UAPI_ASM_POWERPC_AUXVEC_H\n \n /*\n  * We need to put in some extra aux table entries to tell glibc what\n@@ -50,6 +50,4 @@\n \n #define AT_MINSIGSTKSZ\t\t51      /* stack needed for signal delivery */\n \n-#define AT_VECTOR_SIZE_ARCH\t15 /* entries in ARCH_DLINFO */\n-\n #endif\ndiff --git a/arch/riscv/include/asm/auxvec.h b/arch/riscv/include/asm/auxvec.h\nnew file mode 100644\nindex 0000000000000..fb4233445276a\n--- /dev/null\n+++ b/arch/riscv/include/asm/auxvec.h\n@@ -0,0 +1,13 @@\n+/* SPDX-License-Identifier: GPL-2.0-only */\n+/*\n+ * Copyright (C) 2012 ARM Ltd.\n+ * Copyright (C) 2015 Regents of the University of California\n+ */\n+\n+#ifndef _ASM_RISCV_AUXVEC_H\n+#define _ASM_RISCV_AUXVEC_H\n+\n+/* entries in ARCH_DLINFO */\n+#define AT_VECTOR_SIZE_ARCH\t10\n+\n+#endif /* _UAPI_ASM_RISCV_AUXVEC_H */\ndiff --git a/arch/riscv/include/uapi/asm/auxvec.h b/arch/riscv/include/uapi/asm/auxvec.h\nindex 95050ebe9ad00..0a725f2aa2e73 100644\n--- a/arch/riscv/include/uapi/asm/auxvec.h\n+++ b/arch/riscv/include/uapi/asm/auxvec.h\n@@ -33,8 +33,6 @@\n #define AT_L3_CACHESIZE\t\t46\n #define AT_L3_CACHEGEOMETRY\t47\n \n-/* entries in ARCH_DLINFO */\n-#define AT_VECTOR_SIZE_ARCH\t10\n #define AT_MINSIGSTKSZ\t\t51\n \n #endif /* _UAPI_ASM_RISCV_AUXVEC_H */\ndiff --git a/arch/s390/include/asm/auxvec.h b/arch/s390/include/asm/auxvec.h\nnew file mode 100644\nindex 0000000000000..beaaefe12a84e\n--- /dev/null\n+++ b/arch/s390/include/asm/auxvec.h\n@@ -0,0 +1,7 @@\n+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n+#ifndef __ASMS390_AUXVEC_H\n+#define __ASMS390_AUXVEC_H\n+\n+#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */\n+\n+#endif\ndiff --git a/arch/s390/include/uapi/asm/auxvec.h b/arch/s390/include/uapi/asm/auxvec.h\nindex a056c4637ffcf..54bbfd68d709b 100644\n--- a/arch/s390/include/uapi/asm/auxvec.h\n+++ b/arch/s390/include/uapi/asm/auxvec.h\n@@ -1,9 +1,7 @@\n /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n-#ifndef __ASMS390_AUXVEC_H\n-#define __ASMS390_AUXVEC_H\n+#ifndef __ASMS390_UAPI_AUXVEC_H\n+#define __ASMS390_UAPI_AUXVEC_H\n \n #define AT_SYSINFO_EHDR\t\t33\n \n-#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */\n-\n #endif\ndiff --git a/arch/sh/include/asm/auxvec.h b/arch/sh/include/asm/auxvec.h\nnew file mode 100644\nindex 0000000000000..f0830808eb197\n--- /dev/null\n+++ b/arch/sh/include/asm/auxvec.h\n@@ -0,0 +1,7 @@\n+/* SPDX-License-Identifier: GPL-2.0 */\n+#ifndef __ASM_SH_AUXVEC_H\n+#define __ASM_SH_AUXVEC_H\n+\n+#define AT_VECTOR_SIZE_ARCH 5 /* entries in ARCH_DLINFO */\n+\n+#endif /* __ASM_SH_AUXVEC_H */\ndiff --git a/arch/sh/include/uapi/asm/auxvec.h b/arch/sh/include/uapi/asm/auxvec.h\nindex 63fcc39e2c6af..cf0f13da977a0 100644\n--- a/arch/sh/include/uapi/asm/auxvec.h\n+++ b/arch/sh/include/uapi/asm/auxvec.h\n@@ -1,6 +1,6 @@\n /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n-#ifndef __ASM_SH_AUXVEC_H\n-#define __ASM_SH_AUXVEC_H\n+#ifndef __UAPI_ASM_SH_AUXVEC_H\n+#define __UAPI_ASM_SH_AUXVEC_H\n \n /*\n  * Architecture-neutral AT_ values in 0-17, leave some room\n@@ -30,6 +30,4 @@\n #define AT_L1D_CACHESHAPE\t35\n #define AT_L2_CACHESHAPE\t36\n \n-#define AT_VECTOR_SIZE_ARCH 5 /* entries in ARCH_DLINFO */\n-\n-#endif /* __ASM_SH_AUXVEC_H */\n+#endif /* __UAPI_ASM_SH_AUXVEC_H */\ndiff --git a/arch/sparc/include/asm/auxvec.h b/arch/sparc/include/asm/auxvec.h\nnew file mode 100644\nindex 0000000000000..50c249a8bd171\n--- /dev/null\n+++ b/arch/sparc/include/asm/auxvec.h\n@@ -0,0 +1,6 @@\n+#ifndef __ASMSPARC_AUXVEC_H\n+#define __ASMSPARC_AUXVEC_H\n+\n+#define AT_VECTOR_SIZE_ARCH\t4\n+\n+#endif /* !(__ASMSPARC_AUXVEC_H) */\ndiff --git a/arch/sparc/include/uapi/asm/auxvec.h b/arch/sparc/include/uapi/asm/auxvec.h\nindex ab8780fb9df10..0fab3b29148a3 100644\n--- a/arch/sparc/include/uapi/asm/auxvec.h\n+++ b/arch/sparc/include/uapi/asm/auxvec.h\n@@ -1,5 +1,5 @@\n-#ifndef __ASMSPARC_AUXVEC_H\n-#define __ASMSPARC_AUXVEC_H\n+#ifndef __UAPI_ASMSPARC_AUXVEC_H\n+#define __UAPI_ASMSPARC_AUXVEC_H\n \n #define AT_SYSINFO_EHDR\t\t33\n \n@@ -10,6 +10,4 @@\n #define AT_ADI_NBITS\t49\n #define AT_ADI_UEONADI\t50\n \n-#define AT_VECTOR_SIZE_ARCH\t4\n-\n-#endif /* !(__ASMSPARC_AUXVEC_H) */\n+#endif /* !(__UAPI_ASMSPARC_AUXVEC_H) */\ndiff --git a/arch/x86/include/asm/auxvec.h b/arch/x86/include/asm/auxvec.h\nnew file mode 100644\nindex 0000000000000..ed26ad09f3e34\n--- /dev/null\n+++ b/arch/x86/include/asm/auxvec.h\n@@ -0,0 +1,12 @@\n+/* SPDX-License-Identifier: GPL-2.0 */\n+#ifndef _ASM_X86_AUXVEC_H\n+#define _ASM_X86_AUXVEC_H\n+\n+/* entries in ARCH_DLINFO: */\n+#if defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64)\n+# define AT_VECTOR_SIZE_ARCH 3\n+#else /* else it's non-compat x86-64 */\n+# define AT_VECTOR_SIZE_ARCH 2\n+#endif\n+\n+#endif /* _ASM_X86_AUXVEC_H */\ndiff --git a/arch/x86/include/uapi/asm/auxvec.h b/arch/x86/include/uapi/asm/auxvec.h\nindex bdde9e18f94ee..6677c9ace1176 100644\n--- a/arch/x86/include/uapi/asm/auxvec.h\n+++ b/arch/x86/include/uapi/asm/auxvec.h\n@@ -1,6 +1,6 @@\n /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n-#ifndef _ASM_X86_AUXVEC_H\n-#define _ASM_X86_AUXVEC_H\n+#ifndef _UAPI_ASM_X86_AUXVEC_H\n+#define _UAPI_ASM_X86_AUXVEC_H\n /*\n  * Architecture-neutral AT_ values in 0-17, leave some room\n  * for more of them, start the x86-specific ones at 32.\n@@ -10,11 +10,4 @@\n #endif\n #define AT_SYSINFO_EHDR\t\t33\n \n-/* entries in ARCH_DLINFO: */\n-#if defined(__KERNEL__) \u0026\u0026 (defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64))\n-# define AT_VECTOR_SIZE_ARCH 3\n-#else /* else it's non-compat x86-64 */\n-# define AT_VECTOR_SIZE_ARCH 2\n-#endif\n-\n-#endif /* _ASM_X86_AUXVEC_H */\n+#endif /* _UAPI_ASM_X86_AUXVEC_H */\ndiff --git a/include/asm-generic/Kbuild b/include/asm-generic/Kbuild\nindex 2bc00c67dc54b..90626358f94b4 100644\n--- a/include/asm-generic/Kbuild\n+++ b/include/asm-generic/Kbuild\n@@ -6,6 +6,7 @@\n \n mandatory-y += atomic.h\n mandatory-y += archrandom.h\n+mandatory-y += auxvec.h\n mandatory-y += barrier.h\n mandatory-y += bitops.h\n mandatory-y += bug.h\ndiff --git a/include/asm-generic/auxvec.h b/include/asm-generic/auxvec.h\nnew file mode 100644\nindex 0000000000000..e4abd2a8c5ed3\n--- /dev/null\n+++ b/include/asm-generic/auxvec.h\n@@ -0,0 +1,7 @@\n+/* SPDX-License-Identifier: GPL-2.0 */\n+#ifndef __ASM_GENERIC_AUXVAL_H__\n+#define __ASM_GENERIC_AUXVAL_H__\n+\n+#define AT_VECTOR_SIZE_ARCH 0\n+\n+#endif\ndiff --git a/include/linux/auxvec.h b/include/linux/auxvec.h\nindex 8bcb9b7262628..f7ddea1dbc8ed 100644\n--- a/include/linux/auxvec.h\n+++ b/include/linux/auxvec.h\n@@ -2,8 +2,13 @@\n #ifndef _LINUX_AUXVEC_H\n #define _LINUX_AUXVEC_H\n \n+#include \u003cuapi/asm/auxvec.h\u003e\n #include \u003cuapi/linux/auxvec.h\u003e\n+#include \u003casm/auxvec.h\u003e\n \n #define AT_VECTOR_SIZE_BASE 24 /* NEW_AUX_ENT entries in auxiliary table */\n   /* number of \"#define AT_.*\" above, minus {AT_NULL, AT_IGNORE, AT_NOTELF} */\n+\n+#define AT_VECTOR_SIZE (2*(AT_VECTOR_SIZE_ARCH + AT_VECTOR_SIZE_BASE + 1))\n+\n #endif /* _LINUX_AUXVEC_H */\ndiff --git a/include/linux/mm_types.h b/include/linux/mm_types.h\nindex 6d815f6440c94..08a06b26375b2 100644\n--- a/include/linux/mm_types.h\n+++ b/include/linux/mm_types.h\n@@ -26,12 +26,6 @@\n \n #include \u003casm/mmu.h\u003e\n \n-#ifndef AT_VECTOR_SIZE_ARCH\n-#define AT_VECTOR_SIZE_ARCH 0\n-#endif\n-#define AT_VECTOR_SIZE (2*(AT_VECTOR_SIZE_ARCH + AT_VECTOR_SIZE_BASE + 1))\n-\n-\n struct address_space;\n struct futex_private_hash;\n struct mem_cgroup;\n"
}

2/1 2026/09/04 10:06 agent patch-evaluator
0m Model:
core

Args:
null

Results:
{
  "EnableConfigs": null,
  "FocusSymbols": [],
  "Reasoning": "The patch is a header refactoring that separates kernel-internal AT_VECTOR_SIZE_ARCH macros from UAPI headers into internal asm headers and centralizes AT_VECTOR_SIZE in include/linux/auxvec.h. No executable C code, data structures, constants, assertions, or runtime logic are altered.",
  "WorthFuzzing": false
}

Instruction:
You are an expert Linux kernel maintainer and security engineer.
Your job is to review a provided patch series and evaluate whether it warrants fuzzing with syzkaller.

IMPORTANT: The changes have ALREADY been applied and committed as the HEAD commit in
your workspace. Do NOT rely on internal assumptions. You must actively use your code access
tools to inspect the actual source code, callers, and surrounding context.

================================================================================
1. CORE TRIAGE PHILOSOPHY
================================================================================
The goal of patch fuzzing is to discover crashes, regressions, exposed latent bugs,
and newly triggered assertions introduced by the patch series.

- REACHABILITY IS THE PRIMARY GATE:
  Fuzzing can only discover bugs in code that can actually execute in standard virtualized
  environments (GCE or QEMU, utilizing software-emulated devices like USB gadgets, netdev, tun/tap).
  If the modified code is structurally unreachable (see Section 2), it MUST NOT be fuzzed,
  regardless of whether it adds assertions or complex logic.

- DO NOT BLINDLY TRUST "NO FUNCTIONAL CHANGE" (NFCI) OR "REFACTORING" CLAIMS:
  Patch authors routinely label changes as "cleanups", "refactorings", or state
  "No functional change intended". Do NOT take these claims at face value.
  Code refactorings that rearrange logic, introduce helper functions, or alter state management
  in core subsystems frequently introduce subtle semantic shifts or uncover latent kernel bugs.
  If reachable executable code is modified or refactored, it MUST be fuzzed.

- NEW OR MODIFIED ASSERTIONS IN REACHABLE CODE MUST BE FUZZED:
  When a patch introduces or modifies runtime checks or assertions (e.g., WARN_ON*, VM_WARN_ON*,
  BUG_ON*, lockdep_assert*) in reachable code paths, it enforces new or stricter invariants.
  Even if the author believes the invariant always holds, fuzzing is essential to verify whether
  an unusual sequence of operations can violate it.

================================================================================
2. WHEN TO RETURN WorthFuzzing=false (NEGATIVE CRITERIA)
================================================================================
Return WorthFuzzing=false ONLY IF all modified code falls strictly into one or more of these categories:

- Non-kernel and non-executable changes:
  * Modifications to Documentation/, comments, or spelling fixes.
  * User-space directories, self-tests, samples, or scripts (e.g., tools/, samples/, scripts/, usr/)
    that do not affect the compiled kernel image (vmlinux) or kernel modules.
  * Purely decorative logging (e.g., message strings in pr_err, printk, dev_info) or tracepoints
    that do not alter control flow or data structures.
  * Build system or Kconfig changes that do not alter compiled C logic.
- Structurally unreachable hardware:
  * Vendor-specific PCIe switches, SmartNICs, or GPU drivers (e.g., mlxsw, pds_core, qed,
    ionic, amdgpu) requiring physical ASIC/PCIe cards not emulated in standard QEMU.
- Unreachable execution paths:
  * Driver teardown callbacks (.remove, .shutdown, pci_unregister_driver) executed only during
    physical PCI hot-unplug or manual sysfs driver unbinding.
  * Code paths exclusive to architectures other than the target architecture.

================================================================================
3. WHEN TO RETURN WorthFuzzing=true (POSITIVE CRITERIA)
================================================================================
Return WorthFuzzing=true whenever the patch touches reachable executable code, including:
- Core Subsystems:
  * Any logic modifications in memory management (mm/), synchronization/locking (kernel/locking/),
    BPF, scheduler, core networking, VFS, or syscall handling.
- Refactorings and Code Cleanups:
  * Any restructuring of reachable data structures, helper abstractions, or algorithm flows.
- Runtime Assertions and Defensive Checks:
  * Any introduction or alteration of assertions (WARN_ON*, VM_WARN_ON*, BUG_ON*, etc.) in reachable paths.
- Reachable Drivers and Protocols:
  * Drivers accessible via virtual buses (virtio, USB gadget, loopback, netlink, binder, sockets, etc.).

================================================================================
4. EXTRACTING FocusSymbols (PREVENTING DILUTION)
================================================================================
When WorthFuzzing=true, you must extract specific kernel functions into FocusSymbols to guide the fuzzer:

- AVOID UBIQUITOUS LIFECYCLE HOT-PATHS:
  Do NOT list generic, ubiquitous functions called by almost every program in the corpus
  (including, but not limited to: general memory allocators and deallocators, page fault
  and trap handlers, or core synchronization primitives; this is not an exhaustive list).
  Listing ubiquitous functions causes the fuzzer to classify thousands of unrelated tests as "focused",
  which severely dilutes fuzzing effort away from the actual changes.

- TARGET SPECIFIC FEATURE LOGIC AND ENTRYPOINTS:
  List functions that specifically implement the logic being added or altered, or direct API entrypoints
  for the subsystem feature under review.

- HANDLING STATIC INLINE FUNCTIONS IN HEADERS (.h):
  Compiler-inlined static functions (such as static inlines in mm/*.h or include/linux/*.h) lack
  distinct symbol addresses in vmlinux and cannot be targeted directly by symbol coverage filters.
  If the changes are primarily in static inline helpers, identify non-static, feature-specific caller
  functions in .c files that exercise them (avoiding ubiquitous lifecycle wrappers).

================================================================================
5. IDENTIFYING EnableConfigs
================================================================================
Identify any specific CONFIG_ options required to properly compile and reach the modified code:
- Inspect Kconfig files and #ifdef guards; do not make assumptions.
- Check "depends on" lines in Kconfig to include any non-standard parent subsystem configs needed.
- Strip any '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:
Target architecture: amd64

For your convenience, here is the diff of the changes:
commit d566df05c8131467e4edb1ac784fe7f9718a5215
Author: syz-cluster <triage@syzkaller.com>
Date:   Fri Sep 4 10:06:09 2026 +0000

    syz-cluster: applied patch under review

diff --git a/MAINTAINERS b/MAINTAINERS
index 3a19da74d00c9..6974f8dad1e9a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9808,13 +9808,18 @@ L:	linux-mm@kvack.org
 S:	Supported
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/execve
 F:	Documentation/userspace-api/ELF.rst
+F:	arch/*/include/asm/auxvec.h
+F:	arch/*/include/uapi/asm/auxvec.h
 F:	fs/*binfmt_*.c
 F:	fs/Kconfig.binfmt
 F:	fs/exec.c
 F:	fs/tests/binfmt_*_kunit.c
 F:	fs/tests/exec_kunit.c
+F:	include/asm-generic/auxvec.h
+F:	include/linux/auxvec.h
 F:	include/linux/binfmts.h
 F:	include/linux/elf.h
+F:	include/uapi/asm-generic/auxvec.h
 F:	include/uapi/linux/auxvec.h
 F:	include/uapi/linux/binfmts.h
 F:	include/uapi/linux/elf.h
diff --git a/arch/alpha/include/asm/auxvec.h b/arch/alpha/include/asm/auxvec.h
new file mode 100644
index 0000000000000..fa90ee4f899c6
--- /dev/null
+++ b/arch/alpha/include/asm/auxvec.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_ALPHA_AUXVEC_H
+#define __ASM_ALPHA_AUXVEC_H
+
+#define AT_VECTOR_SIZE_ARCH 4 /* entries in ARCH_DLINFO */
+
+#endif /* __ASM_ALPHA_AUXVEC_H */
diff --git a/arch/alpha/include/uapi/asm/auxvec.h b/arch/alpha/include/uapi/asm/auxvec.h
index 57cae8780d811..d21b87b6730a4 100644
--- a/arch/alpha/include/uapi/asm/auxvec.h
+++ b/arch/alpha/include/uapi/asm/auxvec.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef __ASM_ALPHA_AUXVEC_H
-#define __ASM_ALPHA_AUXVEC_H
+#ifndef __UAPI_ASM_ALPHA_AUXVEC_H
+#define __UAPI_ASM_ALPHA_AUXVEC_H
 
 /* Reserve these numbers for any future use of a VDSO.  */
 #if 0
@@ -22,6 +22,4 @@
 #define AT_L2_CACHESHAPE	36
 #define AT_L3_CACHESHAPE	37
 
-#define AT_VECTOR_SIZE_ARCH 4 /* entries in ARCH_DLINFO */
-
-#endif /* __ASM_ALPHA_AUXVEC_H */
+#endif /* __UAPI_ASM_ALPHA_AUXVEC_H */
diff --git a/arch/arm/include/asm/auxvec.h b/arch/arm/include/asm/auxvec.h
deleted file mode 100644
index fbd388c462990..0000000000000
--- a/arch/arm/include/asm/auxvec.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <uapi/asm/auxvec.h>
diff --git a/arch/arm64/include/asm/auxvec.h b/arch/arm64/include/asm/auxvec.h
new file mode 100644
index 0000000000000..de24eaaa06e27
--- /dev/null
+++ b/arch/arm64/include/asm/auxvec.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_AUXVEC_H
+#define __ASM_AUXVEC_H
+
+#define AT_VECTOR_SIZE_ARCH 2 /* entries in ARCH_DLINFO */
+
+#endif
diff --git a/arch/arm64/include/uapi/asm/auxvec.h b/arch/arm64/include/uapi/asm/auxvec.h
index 743c0b84fd30d..fb51e906813a9 100644
--- a/arch/arm64/include/uapi/asm/auxvec.h
+++ b/arch/arm64/include/uapi/asm/auxvec.h
@@ -14,13 +14,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __ASM_AUXVEC_H
-#define __ASM_AUXVEC_H
+#ifndef __UAPI_ASM_AUXVEC_H
+#define __UAPI_ASM_AUXVEC_H
 
 /* vDSO location */
 #define AT_SYSINFO_EHDR	33
 #define AT_MINSIGSTKSZ	51	/* stack needed for signal delivery */
 
-#define AT_VECTOR_SIZE_ARCH 2 /* entries in ARCH_DLINFO */
-
 #endif
diff --git a/arch/loongarch/include/asm/auxvec.h b/arch/loongarch/include/asm/auxvec.h
new file mode 100644
index 0000000000000..37dd717a3a22b
--- /dev/null
+++ b/arch/loongarch/include/asm/auxvec.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Author: Hanlu Li <lihanlu@loongson.cn>
+ *         Huacai Chen <chenhuacai@loongson.cn>
+ *
+ * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
+ */
+
+#ifndef __ASM_AUXVEC_H
+#define __ASM_AUXVEC_H
+
+#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */
+
+#endif /* __ASM_AUXVEC_H */
diff --git a/arch/loongarch/include/uapi/asm/auxvec.h b/arch/loongarch/include/uapi/asm/auxvec.h
index 922d9e6b50586..79691c422c7e4 100644
--- a/arch/loongarch/include/uapi/asm/auxvec.h
+++ b/arch/loongarch/include/uapi/asm/auxvec.h
@@ -6,12 +6,10 @@
  * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
  */
 
-#ifndef __ASM_AUXVEC_H
-#define __ASM_AUXVEC_H
+#ifndef __UAPI_ASM_AUXVEC_H
+#define __UAPI_ASM_AUXVEC_H
 
 /* Location of VDSO image. */
 #define AT_SYSINFO_EHDR		33
 
-#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */
-
-#endif /* __ASM_AUXVEC_H */
+#endif /* __UAPI_ASM_AUXVEC_H */
diff --git a/arch/mips/include/asm/auxvec.h b/arch/mips/include/asm/auxvec.h
new file mode 100644
index 0000000000000..76c445e7890fe
--- /dev/null
+++ b/arch/mips/include/asm/auxvec.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2015 Imagination Technologies
+ * Author: Alex Smith <alex.smith@imgtec.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation;  either version 2 of the  License, or (at your
+ * option) any later version.
+ */
+
+#ifndef __ASM_AUXVEC_H
+#define __ASM_AUXVEC_H
+
+#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */
+
+#endif /* __ASM_AUXVEC_H */
diff --git a/arch/mips/include/uapi/asm/auxvec.h b/arch/mips/include/uapi/asm/auxvec.h
index 612c2c41f60b2..1331ac4d935e3 100644
--- a/arch/mips/include/uapi/asm/auxvec.h
+++ b/arch/mips/include/uapi/asm/auxvec.h
@@ -9,12 +9,10 @@
  * option) any later version.
  */
 
-#ifndef __ASM_AUXVEC_H
-#define __ASM_AUXVEC_H
+#ifndef __UAPI_ASM_AUXVEC_H
+#define __UAPI_ASM_AUXVEC_H
 
 /* Location of VDSO image. */
 #define AT_SYSINFO_EHDR		33
 
-#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */
-
-#endif /* __ASM_AUXVEC_H */
+#endif /* __UAPI_ASM_AUXVEC_H */
diff --git a/arch/powerpc/include/asm/auxvec.h b/arch/powerpc/include/asm/auxvec.h
new file mode 100644
index 0000000000000..d6c180e9ac2cb
--- /dev/null
+++ b/arch/powerpc/include/asm/auxvec.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _ASM_POWERPC_AUXVEC_H
+#define _ASM_POWERPC_AUXVEC_H
+
+#define AT_VECTOR_SIZE_ARCH	15 /* entries in ARCH_DLINFO */
+
+#endif
diff --git a/arch/powerpc/include/uapi/asm/auxvec.h b/arch/powerpc/include/uapi/asm/auxvec.h
index aa7c162154538..9ab5b6d179296 100644
--- a/arch/powerpc/include/uapi/asm/auxvec.h
+++ b/arch/powerpc/include/uapi/asm/auxvec.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef _ASM_POWERPC_AUXVEC_H
-#define _ASM_POWERPC_AUXVEC_H
+#ifndef _UAPI_ASM_POWERPC_AUXVEC_H
+#define _UAPI_ASM_POWERPC_AUXVEC_H
 
 /*
  * We need to put in some extra aux table entries to tell glibc what
@@ -50,6 +50,4 @@
 
 #define AT_MINSIGSTKSZ		51      /* stack needed for signal delivery */
 
-#define AT_VECTOR_SIZE_ARCH	15 /* entries in ARCH_DLINFO */
-
 #endif
diff --git a/arch/riscv/include/asm/auxvec.h b/arch/riscv/include/asm/auxvec.h
new file mode 100644
index 0000000000000..fb4233445276a
--- /dev/null
+++ b/arch/riscv/include/asm/auxvec.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2012 ARM Ltd.
+ * Copyright (C) 2015 Regents of the University of California
+ */
+
+#ifndef _ASM_RISCV_AUXVEC_H
+#define _ASM_RISCV_AUXVEC_H
+
+/* entries in ARCH_DLINFO */
+#define AT_VECTOR_SIZE_ARCH	10
+
+#endif /* _UAPI_ASM_RISCV_AUXVEC_H */
diff --git a/arch/riscv/include/uapi/asm/auxvec.h b/arch/riscv/include/uapi/asm/auxvec.h
index 95050ebe9ad00..0a725f2aa2e73 100644
--- a/arch/riscv/include/uapi/asm/auxvec.h
+++ b/arch/riscv/include/uapi/asm/auxvec.h
@@ -33,8 +33,6 @@
 #define AT_L3_CACHESIZE		46
 #define AT_L3_CACHEGEOMETRY	47
 
-/* entries in ARCH_DLINFO */
-#define AT_VECTOR_SIZE_ARCH	10
 #define AT_MINSIGSTKSZ		51
 
 #endif /* _UAPI_ASM_RISCV_AUXVEC_H */
diff --git a/arch/s390/include/asm/auxvec.h b/arch/s390/include/asm/auxvec.h
new file mode 100644
index 0000000000000..beaaefe12a84e
--- /dev/null
+++ b/arch/s390/include/asm/auxvec.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+#ifndef __ASMS390_AUXVEC_H
+#define __ASMS390_AUXVEC_H
+
+#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */
+
+#endif
diff --git a/arch/s390/include/uapi/asm/auxvec.h b/arch/s390/include/uapi/asm/auxvec.h
index a056c4637ffcf..54bbfd68d709b 100644
--- a/arch/s390/include/uapi/asm/auxvec.h
+++ b/arch/s390/include/uapi/asm/auxvec.h
@@ -1,9 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef __ASMS390_AUXVEC_H
-#define __ASMS390_AUXVEC_H
+#ifndef __ASMS390_UAPI_AUXVEC_H
+#define __ASMS390_UAPI_AUXVEC_H
 
 #define AT_SYSINFO_EHDR		33
 
-#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */
-
 #endif
diff --git a/arch/sh/include/asm/auxvec.h b/arch/sh/include/asm/auxvec.h
new file mode 100644
index 0000000000000..f0830808eb197
--- /dev/null
+++ b/arch/sh/include/asm/auxvec.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_SH_AUXVEC_H
+#define __ASM_SH_AUXVEC_H
+
+#define AT_VECTOR_SIZE_ARCH 5 /* entries in ARCH_DLINFO */
+
+#endif /* __ASM_SH_AUXVEC_H */
diff --git a/arch/sh/include/uapi/asm/auxvec.h b/arch/sh/include/uapi/asm/auxvec.h
index 63fcc39e2c6af..cf0f13da977a0 100644
--- a/arch/sh/include/uapi/asm/auxvec.h
+++ b/arch/sh/include/uapi/asm/auxvec.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef __ASM_SH_AUXVEC_H
-#define __ASM_SH_AUXVEC_H
+#ifndef __UAPI_ASM_SH_AUXVEC_H
+#define __UAPI_ASM_SH_AUXVEC_H
 
 /*
  * Architecture-neutral AT_ values in 0-17, leave some room
@@ -30,6 +30,4 @@
 #define AT_L1D_CACHESHAPE	35
 #define AT_L2_CACHESHAPE	36
 
-#define AT_VECTOR_SIZE_ARCH 5 /* entries in ARCH_DLINFO */
-
-#endif /* __ASM_SH_AUXVEC_H */
+#endif /* __UAPI_ASM_SH_AUXVEC_H */
diff --git a/arch/sparc/include/asm/auxvec.h b/arch/sparc/include/asm/auxvec.h
new file mode 100644
index 0000000000000..50c249a8bd171
--- /dev/null
+++ b/arch/sparc/include/asm/auxvec.h
@@ -0,0 +1,6 @@
+#ifndef __ASMSPARC_AUXVEC_H
+#define __ASMSPARC_AUXVEC_H
+
+#define AT_VECTOR_SIZE_ARCH	4
+
+#endif /* !(__ASMSPARC_AUXVEC_H) */
diff --git a/arch/sparc/include/uapi/asm/auxvec.h b/arch/sparc/include/uapi/asm/auxvec.h
index ab8780fb9df10..0fab3b29148a3 100644
--- a/arch/sparc/include/uapi/asm/auxvec.h
+++ b/arch/sparc/include/uapi/asm/auxvec.h
@@ -1,5 +1,5 @@
-#ifndef __ASMSPARC_AUXVEC_H
-#define __ASMSPARC_AUXVEC_H
+#ifndef __UAPI_ASMSPARC_AUXVEC_H
+#define __UAPI_ASMSPARC_AUXVEC_H
 
 #define AT_SYSINFO_EHDR		33
 
@@ -10,6 +10,4 @@
 #define AT_ADI_NBITS	49
 #define AT_ADI_UEONADI	50
 
-#define AT_VECTOR_SIZE_ARCH	4
-
-#endif /* !(__ASMSPARC_AUXVEC_H) */
+#endif /* !(__UAPI_ASMSPARC_AUXVEC_H) */
diff --git a/arch/x86/include/asm/auxvec.h b/arch/x86/include/asm/auxvec.h
new file mode 100644
index 0000000000000..ed26ad09f3e34
--- /dev/null
+++ b/arch/x86/include/asm/auxvec.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _ASM_X86_AUXVEC_H
+#define _ASM_X86_AUXVEC_H
+
+/* entries in ARCH_DLINFO: */
+#if defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64)
+# define AT_VECTOR_SIZE_ARCH 3
+#else /* else it's non-compat x86-64 */
+# define AT_VECTOR_SIZE_ARCH 2
+#endif
+
+#endif /* _ASM_X86_AUXVEC_H */
diff --git a/arch/x86/include/uapi/asm/auxvec.h b/arch/x86/include/uapi/asm/auxvec.h
index bdde9e18f94ee..6677c9ace1176 100644
--- a/arch/x86/include/uapi/asm/auxvec.h
+++ b/arch/x86/include/uapi/asm/auxvec.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef _ASM_X86_AUXVEC_H
-#define _ASM_X86_AUXVEC_H
+#ifndef _UAPI_ASM_X86_AUXVEC_H
+#define _UAPI_ASM_X86_AUXVEC_H
 /*
  * Architecture-neutral AT_ values in 0-17, leave some room
  * for more of them, start the x86-specific ones at 32.
@@ -10,11 +10,4 @@
 #endif
 #define AT_SYSINFO_EHDR		33
 
-/* entries in ARCH_DLINFO: */
-#if defined(__KERNEL__) && (defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64))
-# define AT_VECTOR_SIZE_ARCH 3
-#else /* else it's non-compat x86-64 */
-# define AT_VECTOR_SIZE_ARCH 2
-#endif
-
-#endif /* _ASM_X86_AUXVEC_H */
+#endif /* _UAPI_ASM_X86_AUXVEC_H */
diff --git a/include/asm-generic/Kbuild b/include/asm-generic/Kbuild
index 2bc00c67dc54b..90626358f94b4 100644
--- a/include/asm-generic/Kbuild
+++ b/include/asm-generic/Kbuild
@@ -6,6 +6,7 @@
 
 mandatory-y += atomic.h
 mandatory-y += archrandom.h
+mandatory-y += auxvec.h
 mandatory-y += barrier.h
 mandatory-y += bitops.h
 mandatory-y += bug.h
diff --git a/include/asm-generic/auxvec.h b/include/asm-generic/auxvec.h
new file mode 100644
index 0000000000000..e4abd2a8c5ed3
--- /dev/null
+++ b/include/asm-generic/auxvec.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_GENERIC_AUXVAL_H__
+#define __ASM_GENERIC_AUXVAL_H__
+
+#define AT_VECTOR_SIZE_ARCH 0
+
+#endif
diff --git a/include/linux/auxvec.h b/include/linux/auxvec.h
index 8bcb9b7262628..f7ddea1dbc8ed 100644
--- a/include/linux/auxvec.h
+++ b/include/linux/auxvec.h
@@ -2,8 +2,13 @@
 #ifndef _LINUX_AUXVEC_H
 #define _LINUX_AUXVEC_H
 
+#include <uapi/asm/auxvec.h>
 #include <uapi/linux/auxvec.h>
+#include <asm/auxvec.h>
 
 #define AT_VECTOR_SIZE_BASE 24 /* NEW_AUX_ENT entries in auxiliary table */
   /* number of "#define AT_.*" above, minus {AT_NULL, AT_IGNORE, AT_NOTELF} */
+
+#define AT_VECTOR_SIZE (2*(AT_VECTOR_SIZE_ARCH + AT_VECTOR_SIZE_BASE + 1))
+
 #endif /* _LINUX_AUXVEC_H */
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 6d815f6440c94..08a06b26375b2 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -26,12 +26,6 @@
 
 #include <asm/mmu.h>
 
-#ifndef AT_VECTOR_SIZE_ARCH
-#define AT_VECTOR_SIZE_ARCH 0
-#endif
-#define AT_VECTOR_SIZE (2*(AT_VECTOR_SIZE_ARCH + AT_VECTOR_SIZE_BASE + 1))
-
-
 struct address_space;
 struct futex_private_hash;
 struct mem_cgroup;

3/2 2026/09/04 10:06 llm patch-evaluator
0m Model:
gemini-3.7-flash

Args:
null

Results:
null

Tokens:
							input: 9006
							output: 19
							thoughts: 363
						

Thoughts:
**My Initial Assessment of the Patch**

Okay, let's dive into this patch and dissect the modifications. My first impression is that it seems to be primarily focused on refactoring and reorganizing header files, specifically related to the auxiliary vector definitions. The patch touches on `MAINTAINERS`, which is generally a good sign of clean-up and documentation updates.

I see that `arch/*/include/asm/auxvec.h` and `arch/*/include/uapi/asm/auxvec.h` are being modified across multiple architectures (alpha, arm, arm64, etc.). My hypothesis is that this involves moving `AT_VECTOR_SIZE_ARCH` definitions from the user-space API headers (`uapi`) into the kernel-internal headers (`asm`). That's a good practice, promoting better separation of concerns and preventing potential conflicts or misuse by user-space code.

The patch also adds `auxvec.h` to the mandatory build targets and defines a default `AT_VECTOR_SIZE_ARCH` in `include/asm-generic/Kbuild` and `include/asm-generic/auxvec.h`. This suggests some sort of fallback mechanism or general definition is being added, a nice touch.

Further, I'm noticing `include/linux/auxvec.h` now includes `<uapi/asm/auxvec.h>`, `<uapi/linux/auxvec.h>`, and `<asm/auxvec.h>` and defines `AT_VECTOR_SIZE`. This consolidation points to the central location for managing these definitions.

Finally, the removal of the `#ifndef AT_VECTOR_SIZE_ARCH ... #define AT_VECTOR_SIZE ...` definition from `include/linux/mm_types.h` suggests that this particular definition has been moved to its proper location.

My gut feeling is that this is purely a header reorganization/cleanup exercise to reduce duplication and improve the overall structure, and a good thing to do. However, I need to confirm this before I feel entirely comfortable.

To be certain, I want to verify if any executable logic is affected. I'll need to use `grepper` or `read-file` to check the actual uses and definitions of `AT_VECTOR_SIZE_ARCH` and `AT_VECTOR_SIZE` throughout the codebase. This will confirm whether this is a purely structural change or if there are subtle behavioral changes I need to be aware of.



4/2 2026/09/04 10:06 tool grepper
0m Args:
{
  "Expression": "AT_VECTOR_SIZE"
}

Results:
{
  "Output": "arch/alpha/include/asm/auxvec.h-4-\narch/alpha/include/asm/auxvec.h:5:#define AT_VECTOR_SIZE_ARCH 4 /* entries in ARCH_DLINFO */\narch/alpha/include/asm/auxvec.h-6-\n--\narch/alpha/include/asm/elf.h=144=extern int alpha_l3_cacheshape;\narch/alpha/include/asm/elf.h-145-\narch/alpha/include/asm/elf.h:146:/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */\narch/alpha/include/asm/elf.h-147-#define ARCH_DLINFO\t\t\t\t\t\t\\\n--\narch/arm64/include/asm/auxvec.h-4-\narch/arm64/include/asm/auxvec.h:5:#define AT_VECTOR_SIZE_ARCH 2 /* entries in ARCH_DLINFO */\narch/arm64/include/asm/auxvec.h-6-\n--\narch/arm64/include/asm/elf.h=152=typedef struct user_fpsimd_state elf_fpregset_t;\n--\narch/arm64/include/asm/elf.h-166-\narch/arm64/include/asm/elf.h:167:/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */\narch/arm64/include/asm/elf.h-168-#define ARCH_DLINFO\t\t\t\t\t\t\t\\\n--\narch/loongarch/include/asm/auxvec.h-11-\narch/loongarch/include/asm/auxvec.h:12:#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */\narch/loongarch/include/asm/auxvec.h-13-\n--\narch/loongarch/include/asm/elf.h=319=extern const char *__elf_platform;\n--\narch/loongarch/include/asm/elf.h-340-\narch/loongarch/include/asm/elf.h:341:/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */\narch/loongarch/include/asm/elf.h-342-#define ARCH_DLINFO\t\t\t\t\t\t\t\\\n--\narch/mips/include/asm/auxvec.h-14-\narch/mips/include/asm/auxvec.h:15:#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */\narch/mips/include/asm/auxvec.h-16-\n--\narch/mips/include/asm/elf.h=436=extern const char *__elf_base_platform;\n--\narch/mips/include/asm/elf.h-459-\narch/mips/include/asm/elf.h:460:/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */\narch/mips/include/asm/elf.h-461-#define ARCH_DLINFO\t\t\t\t\t\t\t\\\n--\narch/powerpc/include/asm/auxvec.h-4-\narch/powerpc/include/asm/auxvec.h:5:#define AT_VECTOR_SIZE_ARCH\t15 /* entries in ARCH_DLINFO */\narch/powerpc/include/asm/auxvec.h-6-\n--\narch/powerpc/include/asm/elf.h=117=extern int arch_setup_additional_pages(struct linux_binprm *bprm,\n--\narch/powerpc/include/asm/elf.h-158- *   even if DLINFO_ARCH_ITEMS goes to zero or is undefined.\narch/powerpc/include/asm/elf.h:159: * update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes\narch/powerpc/include/asm/elf.h-160- */\n--\narch/riscv/include/asm/auxvec.h-10-/* entries in ARCH_DLINFO */\narch/riscv/include/asm/auxvec.h:11:#define AT_VECTOR_SIZE_ARCH\t10\narch/riscv/include/asm/auxvec.h-12-\n--\narch/s390/include/asm/auxvec.h-4-\narch/s390/include/asm/auxvec.h:5:#define AT_VECTOR_SIZE_ARCH 1 /* entries in ARCH_DLINFO */\narch/s390/include/asm/auxvec.h-6-\n--\narch/s390/include/asm/elf.h=217=do {\t\t\t\t\t\t\t\t\\\n--\narch/s390/include/asm/elf.h-232-\narch/s390/include/asm/elf.h:233:/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */\narch/s390/include/asm/elf.h-234-#define ARCH_DLINFO\t\t\t\t\t\t\t\\\n--\narch/sh/include/asm/auxvec.h-4-\narch/sh/include/asm/auxvec.h:5:#define AT_VECTOR_SIZE_ARCH 5 /* entries in ARCH_DLINFO */\narch/sh/include/asm/auxvec.h-6-\n--\narch/sh/include/asm/elf.h=194=extern int l1i_cache_shape, l1d_cache_shape, l2_cache_shape;\narch/sh/include/asm/elf.h-195-\narch/sh/include/asm/elf.h:196:/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */\narch/sh/include/asm/elf.h-197-#define ARCH_DLINFO\t\t\t\t\t\t\\\n--\narch/sparc/include/asm/auxvec.h-3-\narch/sparc/include/asm/auxvec.h:4:#define AT_VECTOR_SIZE_ARCH\t4\narch/sparc/include/asm/auxvec.h-5-\n--\narch/x86/include/asm/auxvec.h-6-#if defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64)\narch/x86/include/asm/auxvec.h:7:# define AT_VECTOR_SIZE_ARCH 3\narch/x86/include/asm/auxvec.h-8-#else /* else it's non-compat x86-64 */\narch/x86/include/asm/auxvec.h:9:# define AT_VECTOR_SIZE_ARCH 2\narch/x86/include/asm/auxvec.h-10-#endif\n--\narch/x86/include/asm/elf.h=312=extern unsigned long get_sigframe_size(void);\n--\narch/x86/include/asm/elf.h-320-\narch/x86/include/asm/elf.h:321:/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */\narch/x86/include/asm/elf.h-322-\n--\nfs/binfmt_elf.c=165=create_elf_tables(struct linux_binprm *bprm, const struct elfhdr *exec,\n--\nfs/binfmt_elf.c-232-\telf_info = (elf_addr_t *)mm-\u003esaved_auxv;\nfs/binfmt_elf.c:233:\t/* update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes */\nfs/binfmt_elf.c-234-#define NEW_AUX_ENT(id, val) \\\n--\nfs/binfmt_elf.c-243-\t * AUXV.\nfs/binfmt_elf.c:244:\t * update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT() in\nfs/binfmt_elf.c-245-\t * ARCH_DLINFO changes\n--\nfs/binfmt_elf_fdpic.c=504=static int create_elf_fdpic_tables(struct linux_binprm *bprm,\n--\nfs/binfmt_elf_fdpic.c-597-\tnitems = 1 + DLINFO_ITEMS + (k_platform ? 1 : 0) +\nfs/binfmt_elf_fdpic.c:598:\t\t(k_base_platform ? 1 : 0) + AT_VECTOR_SIZE_ARCH;\nfs/binfmt_elf_fdpic.c-599-\n--\nfs/binfmt_elf_fdpic.c-622-\telf_info = (elf_addr_t *)mm-\u003esaved_auxv;\nfs/binfmt_elf_fdpic.c:623:\t/* update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes */\nfs/binfmt_elf_fdpic.c-624-#define NEW_AUX_ENT(id, val) \\\n--\nfs/binfmt_elf_fdpic.c-633-\t * AUXV.\nfs/binfmt_elf_fdpic.c:634:\t * update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT() in\nfs/binfmt_elf_fdpic.c-635-\t * ARCH_DLINFO changes\n--\ninclude/asm-generic/auxvec.h-4-\ninclude/asm-generic/auxvec.h:5:#define AT_VECTOR_SIZE_ARCH 0\ninclude/asm-generic/auxvec.h-6-\n--\ninclude/linux/auxvec.h-8-\ninclude/linux/auxvec.h:9:#define AT_VECTOR_SIZE_BASE 24 /* NEW_AUX_ENT entries in auxiliary table */\ninclude/linux/auxvec.h-10-  /* number of \"#define AT_.*\" above, minus {AT_NULL, AT_IGNORE, AT_NOTELF} */\ninclude/linux/auxvec.h-11-\ninclude/linux/auxvec.h:12:#define AT_VECTOR_SIZE (2*(AT_VECTOR_SIZE_ARCH + AT_VECTOR_SIZE_BASE + 1))\ninclude/linux/auxvec.h-13-\n--\ninclude/linux/mm_types.h=1169=struct mm_struct {\n--\ninclude/linux/mm_types.h-1301-\ninclude/linux/mm_types.h:1302:\t\tunsigned long saved_auxv[AT_VECTOR_SIZE]; /* for /proc/PID/auxv */\ninclude/linux/mm_types.h-1303-\n--\nkernel/sys.c=2060=static int prctl_set_mm_map(int opt, const void __user *addr, unsigned long data_size)\n--\nkernel/sys.c-2062-\tstruct prctl_mm_map prctl_map = { .exe_fd = (u32)-1, };\nkernel/sys.c:2063:\tunsigned long user_auxv[AT_VECTOR_SIZE];\nkernel/sys.c-2064-\tstruct mm_struct *mm = current-\u003emm;\n--\nkernel/sys.c-2098-\t\t/* Last entry must be AT_NULL as specification requires */\nkernel/sys.c:2099:\t\tuser_auxv[AT_VECTOR_SIZE - 2] = AT_NULL;\nkernel/sys.c:2100:\t\tuser_auxv[AT_VECTOR_SIZE - 1] = AT_NULL;\nkernel/sys.c-2101-\t}\n--\nkernel/sys.c=2168=static int prctl_set_auxv(struct mm_struct *mm, unsigned long addr,\n--\nkernel/sys.c-2176-\t */\nkernel/sys.c:2177:\tunsigned long user_auxv[AT_VECTOR_SIZE] = {};\nkernel/sys.c-2178-\n--\nkernel/sys.c-2185-\t/* Make sure the last entry is always AT_NULL */\nkernel/sys.c:2186:\tuser_auxv[AT_VECTOR_SIZE - 2] = 0;\nkernel/sys.c:2187:\tuser_auxv[AT_VECTOR_SIZE - 1] = 0;\nkernel/sys.c-2188-\n"
}

5/2 2026/09/04 10:06 llm patch-evaluator
0m Model:
gemini-3.7-flash

Args:
null

Results:
null

Tokens:
							input: 12941
							output: 35
							thoughts: 803
						

Thoughts:
**Analyzing the auxvec.h Patch**

Okay, let's break this down. My initial impression is that this patch is primarily a refactoring effort, focused on header file organization related to the auxiliary vector (`auxv`). The goal seems to be to clean up the definitions and make them less prone to unintended exposure to userspace.

My first thought is, why is `AT_VECTOR_SIZE_ARCH` being defined in `include/uapi/*/auxvec.h` under `__KERNEL__` or exposed to userspace? That's a red flag. As I understand it, `AT_VECTOR_SIZE_ARCH` is really an internal kernel macro used to size `mm->saved_auxv` (`AT_VECTOR_SIZE`). It doesn't need to be in the UAPI, so moving it is a sensible change.

So the core of the patch involves:

1.  Creating internal kernel `<asm/auxvec.h>` headers (or using generic `<asm-generic/auxvec.h>`) – this sounds like a good practice for encapsulating kernel-specific definitions.
2.  Moving `AT_VECTOR_SIZE_ARCH` from `uapi/asm/auxvec.h` to these internal headers. Excellent. Keeping the kernel internals separated from the userspace interface is always preferred.
3.  Moving the `AT_VECTOR_SIZE` definition from `<linux/mm_types.h>` to `<linux/auxvec.h>`. That makes more sense; the auxvec size is inherently related to the auxvec itself.

Now, let's dig into the details: No changes to C code, logic, control flow, functions, structures, sizes, or algorithms other than what I've identified. The values of `AT_VECTOR_SIZE_ARCH` appear to be mostly unchanged. I see that the `arm` architecture's stub definition for `AT_VECTOR_SIZE_ARCH` is removed, so it will now use the generic 0 value, which seems fine since it didn't define it before anyway. The values for all the architectures are the same as before, which means that the patch isn't causing any regressions in size of auxv.

Regarding `AT_VECTOR_SIZE` itself: the logic is tweaked to include the new kernel includes. The calculation uses `AT_VECTOR_SIZE_BASE`, which is now defined. I'll need to double-check that `linux/mm_types.h` includes `linux/auxvec.h` to ensure that there are no knock-on effects. But, overall, this seems like a solid and well-considered cleanup.



6/2 2026/09/04 10:06 tool read-file
0m Args:
{
  "File": "include/linux/mm_types.h",
  "FirstLine": 1,
  "LineCount": 40
}

Results:
{
  "Contents": "   1:\t/* SPDX-License-Identifier: GPL-2.0 */\n   2:\t#ifndef _LINUX_MM_TYPES_H\n   3:\t#define _LINUX_MM_TYPES_H\n   4:\t\n   5:\t#include \u003clinux/mm_types_task.h\u003e\n   6:\t\n   7:\t#include \u003clinux/auxvec.h\u003e\n   8:\t#include \u003clinux/kref.h\u003e\n   9:\t#include \u003clinux/list.h\u003e\n  10:\t#include \u003clinux/spinlock.h\u003e\n  11:\t#include \u003clinux/rbtree.h\u003e\n  12:\t#include \u003clinux/maple_tree.h\u003e\n  13:\t#include \u003clinux/rwsem.h\u003e\n  14:\t#include \u003clinux/completion.h\u003e\n  15:\t#include \u003clinux/cpumask.h\u003e\n  16:\t#include \u003clinux/uprobes.h\u003e\n  17:\t#include \u003clinux/rcupdate.h\u003e\n  18:\t#include \u003clinux/page-flags-layout.h\u003e\n  19:\t#include \u003clinux/workqueue.h\u003e\n  20:\t#include \u003clinux/seqlock.h\u003e\n  21:\t#include \u003clinux/percpu_counter.h\u003e\n  22:\t#include \u003clinux/types.h\u003e\n  23:\t#include \u003clinux/futex_types.h\u003e\n  24:\t#include \u003clinux/rseq_types.h\u003e\n  25:\t#include \u003clinux/bitmap.h\u003e\n  26:\t\n  27:\t#include \u003casm/mmu.h\u003e\n  28:\t\n  29:\tstruct address_space;\n  30:\tstruct futex_private_hash;\n  31:\tstruct mem_cgroup;\n  32:\t\n  33:\ttypedef struct {\n  34:\t\tunsigned long f;\n  35:\t} memdesc_flags_t;\n  36:\t\n  37:\t/*\n  38:\t * Each physical page in the system has a struct page associated with\n  39:\t * it to keep track of whatever it is we are using the page for at the\n  40:\t * moment. Note that we have no way to track which tasks are using\n"
}

7/2 2026/09/04 10:06 llm patch-evaluator
0m Model:
gemini-3.7-flash

Args:
null

Results:
null

Tokens:
							input: 14918
							output: 95
							thoughts: 284
						

Thoughts:
**My Assessment of This Change**

Okay, let's break this down systematically. I need to determine if this patch warrants any further scrutiny, given my expertise. The core of the evaluation hinges on those negative criteria. The patch description itself looks promising but I need to ensure it meets those criteria.

First, the negative criteria are paramount: *Non-kernel and non-executable changes*. These are the red flags to avoid unnecessary code review. The patch description states it contains *Modifications to Documentation/, comments, or spelling fixes. User-space directories, self-tests, samples, or scripts. Purely decorative logging. Build system or Kconfig changes that do not alter compiled C logic. Header renames / macro relocation with no executable code change / no change in values.*

Now, let's rigorously check the details. Does the change touch any runtime logic, any executable code, any data structure sizes or control flow? The description is clear – *No*. The macro values `AT_VECTOR_SIZE` and `AT_VECTOR_SIZE_ARCH` remain *completely* unchanged. No new functions are introduced, removed, or altered. The modifications are isolated to header files (macro relocations) and `MAINTAINERS` / `Kbuild` files. Therefore, there is definitively *zero* executable code change. This is the key.

Let's do a final review of other factors: the `WorthFuzzing`, `FocusSymbols`, and `EnableConfigs` are all negative which means there are no further implications. The reasoning for the change is concise: This is a header cleanup/refactoring separating kernel-internal AT_VECTOR_SIZE_ARCH definitions from UAPI headers, with no changes to executable code, logic, data structure layout, or runtime behavior. Excellent. This checks all the boxes. Okay, I'm confident in the assessment. Time to call it.



8/2 2026/09/04 10:06 tool set-results
0m Args:
{
  "EnableConfigs": [],
  "FocusSymbols": [],
  "Reasoning": "The patch is a header refactoring that separates kernel-internal AT_VECTOR_SIZE_ARCH macros from UAPI headers into internal asm headers and centralizes AT_VECTOR_SIZE in include/linux/auxvec.h. No executable C code, data structures, constants, assertions, or runtime logic are altered.",
  "WorthFuzzing": false
}

Results:
{
  "EnableConfigs": null,
  "FocusSymbols": [],
  "Reasoning": "The patch is a header refactoring that separates kernel-internal AT_VECTOR_SIZE_ARCH macros from UAPI headers into internal asm headers and centralizes AT_VECTOR_SIZE in include/linux/auxvec.h. No executable C code, data structures, constants, assertions, or runtime logic are altered.",
  "WorthFuzzing": false
}

9/1 2026/09/04 10:06 action If
0m Args:
{
  "WorthFuzzing": false
}

Results:
null

LLM Calls Summary:
Total Calls Total Tokens Avg Tokens Total Duration (Seconds) Avg Duration (Seconds)
Tool Calls Summary:
Total Calls Total Duration (Seconds) Avg Duration (Seconds)