From c90ef42fcbe39270e8bfc3089e2cf1ce7ecbce16 Mon Sep 17 00:00:00 2001 From: Cheyenne Wills Date: Wed, 6 Sep 2023 11:41:55 -0600 Subject: [PATCH 07/10] LINUX: Pass an array of structs to register_sysctl The Linux 6.6 commit "sysctl: Add size to register_sysctl" (9edbfe92a0) renamed the Linux function register_sysctl() to register_sysctl_sz() and added a size parameter. For backward compatibility, a macro, register_sysctl, is provided. The macro calculates the size of the ctl_table being registered and passes the size to register_sysctl_sz. However, in order to perform the size calculation, an array of ctl_table structures must be passed as the 2nd parameter. This change only affects the autoconf test used to determine if Linux provides register_sysctl. Update the autoconf test for register_sysctl to use an actual ctl_table structure for the 2nd parameter instead of a NULL. Reviewed-on: https://gerrit.openafs.org/15559 Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk Tested-by: BuildBot (cherry picked from commit 76879b28798840fa0df441c328ada9667f06b154) Change-Id: I9209d9fbc4514ab658f373510decfc2e81a5dc5f Reviewed-on: https://gerrit.openafs.org/15575 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie Reviewed-by: Stephan Wiesand (cherry picked from commit 5b647bf17a878271e1ce9882e41663770ee73528) --- src/cf/linux-kernel-func.m4 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 index 145725575..105e58cce 100644 --- a/src/cf/linux-kernel-func.m4 +++ b/src/cf/linux-kernel-func.m4 @@ -220,10 +220,13 @@ AC_CHECK_LINUX_FUNC([block_dirty_folio], dnl Linux 6.5 removed the Linux function register_sysctl_table(), which dnl was deprecated in Linux 6.3 in favor of register_sysctl() which was dnl introduced in Linux 3.3 +dnl Linux 6.6 changed the function register_sysctl to a macro that requires +dnl an array of ctl_table structures as its 2nd parameter AC_CHECK_LINUX_FUNC([register_sysctl], - [#include - #include ], - [(void)register_sysctl(NULL, NULL);]) + [#include + #include ], + [[static struct ctl_table cf_sysctl_table[1]; + (void)register_sysctl(NULL, cf_sysctl_table);]]) dnl Linux 6.5 removed the file_operations method 'iterate'. Filesystems should dnl using the iterate_shared method (introduced in linux 4.6). Linux 6.4 -- 2.43.0