]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sysctl: Add CONFIG_PROC_SYSCTL guards for converter macros
authorJoel Granados <joel.granados@kernel.org>
Fri, 5 Dec 2025 10:18:43 +0000 (11:18 +0100)
committerJoel Granados <joel.granados@kernel.org>
Mon, 5 Jan 2026 13:10:32 +0000 (14:10 +0100)
Wrap sysctl converter macros with CONFIG_PROC_SYSCTL conditional
compilation. When CONFIG_PROC_SYSCTL is disabled, provide stub
implementations that return -ENOSYS to prevent link errors while
maintaining API compatibility.

This ensures converter macros are only compiled when procfs sysctl
support is enabled in the kernel configuration.

Signed-off-by: Joel Granados <joel.granados@kernel.org>
include/linux/sysctl.h

index 288fe0055cd5f7bd670a4e9797cc0595f4060e5f..0a64212a0ceb8454ae343831739831a092b6e693 100644 (file)
@@ -73,6 +73,7 @@ extern const int sysctl_vals[];
 #define SYSCTL_USER_TO_KERN(dir) (!!(dir))
 #define SYSCTL_KERN_TO_USER(dir) (!dir)
 
+#ifdef CONFIG_PROC_SYSCTL
 #define SYSCTL_USER_TO_KERN_INT_CONV(name, u_ptr_op)           \
 int sysctl_user_to_kern_int_conv##name(const bool *negp,       \
                                       const unsigned long *u_ptr,\
@@ -173,6 +174,48 @@ int do_proc_uint_conv##name(unsigned long *u_ptr, unsigned int *k_ptr,     \
        return 0;                                                       \
 }
 
+#else // CONFIG_PROC_SYSCTL
+#define SYSCTL_USER_TO_KERN_INT_CONV(name, u_ptr_op)           \
+int sysctl_user_to_kern_int_conv##name(const bool *negp,       \
+                                      const unsigned long *u_ptr,\
+                                      int *k_ptr)              \
+{                                                              \
+       return -ENOSYS;                                         \
+}
+
+#define SYSCTL_KERN_TO_USER_INT_CONV(name, k_ptr_op)           \
+int sysctl_kern_to_user_int_conv##name(bool *negp,             \
+                                      unsigned long *u_ptr,    \
+                                      const int *k_ptr)        \
+{                                                              \
+       return -ENOSYS;                                         \
+}
+
+#define SYSCTL_INT_CONV_CUSTOM(name, user_to_kern, kern_to_user,       \
+                              k_ptr_range_check)                       \
+int do_proc_int_conv##name(bool *negp, unsigned long *u_ptr, int *k_ptr,\
+                          int dir, const struct ctl_table *tbl)        \
+{                                                                      \
+       return -ENOSYS;                                                 \
+}
+
+#define SYSCTL_USER_TO_KERN_UINT_CONV(name, u_ptr_op)          \
+int sysctl_user_to_kern_uint_conv##name(const unsigned long *u_ptr,\
+                                       unsigned int *k_ptr)    \
+{                                                              \
+       return -ENOSYS;                                         \
+}
+
+#define SYSCTL_UINT_CONV_CUSTOM(name, user_to_kern, kern_to_user,      \
+                               k_ptr_range_check)                      \
+int do_proc_uint_conv##name(unsigned long *u_ptr, unsigned int *k_ptr, \
+                          int dir, const struct ctl_table *tbl)        \
+{                                                                      \
+       return -ENOSYS;                                                 \
+}
+
+#endif // CONFIG_PROC_SYSCTL
+
 
 extern const unsigned long sysctl_long_vals[];