Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sysctl: Add CONFIG_PROC_SYSCTL guards for converter macros

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>

+43
+43
include/linux/sysctl.h
··· 73 73 #define SYSCTL_USER_TO_KERN(dir) (!!(dir)) 74 74 #define SYSCTL_KERN_TO_USER(dir) (!dir) 75 75 76 + #ifdef CONFIG_PROC_SYSCTL 76 77 #define SYSCTL_USER_TO_KERN_INT_CONV(name, u_ptr_op) \ 77 78 int sysctl_user_to_kern_int_conv##name(const bool *negp, \ 78 79 const unsigned long *u_ptr,\ ··· 173 172 return user_to_kern(u_ptr, k_ptr); \ 174 173 return 0; \ 175 174 } 175 + 176 + #else // CONFIG_PROC_SYSCTL 177 + #define SYSCTL_USER_TO_KERN_INT_CONV(name, u_ptr_op) \ 178 + int sysctl_user_to_kern_int_conv##name(const bool *negp, \ 179 + const unsigned long *u_ptr,\ 180 + int *k_ptr) \ 181 + { \ 182 + return -ENOSYS; \ 183 + } 184 + 185 + #define SYSCTL_KERN_TO_USER_INT_CONV(name, k_ptr_op) \ 186 + int sysctl_kern_to_user_int_conv##name(bool *negp, \ 187 + unsigned long *u_ptr, \ 188 + const int *k_ptr) \ 189 + { \ 190 + return -ENOSYS; \ 191 + } 192 + 193 + #define SYSCTL_INT_CONV_CUSTOM(name, user_to_kern, kern_to_user, \ 194 + k_ptr_range_check) \ 195 + int do_proc_int_conv##name(bool *negp, unsigned long *u_ptr, int *k_ptr,\ 196 + int dir, const struct ctl_table *tbl) \ 197 + { \ 198 + return -ENOSYS; \ 199 + } 200 + 201 + #define SYSCTL_USER_TO_KERN_UINT_CONV(name, u_ptr_op) \ 202 + int sysctl_user_to_kern_uint_conv##name(const unsigned long *u_ptr,\ 203 + unsigned int *k_ptr) \ 204 + { \ 205 + return -ENOSYS; \ 206 + } 207 + 208 + #define SYSCTL_UINT_CONV_CUSTOM(name, user_to_kern, kern_to_user, \ 209 + k_ptr_range_check) \ 210 + int do_proc_uint_conv##name(unsigned long *u_ptr, unsigned int *k_ptr, \ 211 + int dir, const struct ctl_table *tbl) \ 212 + { \ 213 + return -ENOSYS; \ 214 + } 215 + 216 + #endif // CONFIG_PROC_SYSCTL 176 217 177 218 178 219 extern const unsigned long sysctl_long_vals[];