Linux 6.11: first arg to proc_handler is now const
Detect it, and use a macro to make sure we always match the prototype. Reviewed-by: Tony Hutter <hutter2@llnl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rob Norris <robn@despairlabs.com> Sponsored-by: https://despairlabs.com/sponsor/ Closes #16400
This commit is contained in:
parent
7e98d30f46
commit
22619523f6
|
@ -25,3 +25,36 @@ AC_DEFUN([ZFS_AC_KERNEL_REGISTER_SYSCTL_TABLE], [
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
|
dnl #
|
||||||
|
dnl # Linux 6.11 makes const the ctl_table arg of proc_handler
|
||||||
|
dnl #
|
||||||
|
AC_DEFUN([ZFS_AC_KERNEL_SRC_PROC_HANDLER_CTL_TABLE_CONST], [
|
||||||
|
ZFS_LINUX_TEST_SRC([has_proc_handler_ctl_table_const], [
|
||||||
|
#include <linux/sysctl.h>
|
||||||
|
|
||||||
|
static int test_handler(
|
||||||
|
const struct ctl_table *ctl __attribute((unused)),
|
||||||
|
int write __attribute((unused)),
|
||||||
|
void *buffer __attribute((unused)),
|
||||||
|
size_t *lenp __attribute((unused)),
|
||||||
|
loff_t *ppos __attribute((unused)))
|
||||||
|
{
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
], [
|
||||||
|
proc_handler *ph __attribute((unused)) =
|
||||||
|
&test_handler;
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([ZFS_AC_KERNEL_PROC_HANDLER_CTL_TABLE_CONST], [
|
||||||
|
AC_MSG_CHECKING([whether proc_handler ctl_table arg is const])
|
||||||
|
ZFS_LINUX_TEST_RESULT([has_proc_handler_ctl_table_const], [
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
AC_DEFINE(HAVE_PROC_HANDLER_CTL_TABLE_CONST, 1,
|
||||||
|
[proc_handler ctl_table arg is const])
|
||||||
|
], [
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
|
@ -167,6 +167,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
|
||||||
ZFS_AC_KERNEL_SRC_WRITEPAGE_T
|
ZFS_AC_KERNEL_SRC_WRITEPAGE_T
|
||||||
ZFS_AC_KERNEL_SRC_RECLAIMED
|
ZFS_AC_KERNEL_SRC_RECLAIMED
|
||||||
ZFS_AC_KERNEL_SRC_REGISTER_SYSCTL_TABLE
|
ZFS_AC_KERNEL_SRC_REGISTER_SYSCTL_TABLE
|
||||||
|
ZFS_AC_KERNEL_SRC_PROC_HANDLER_CTL_TABLE_CONST
|
||||||
ZFS_AC_KERNEL_SRC_COPY_SPLICE_READ
|
ZFS_AC_KERNEL_SRC_COPY_SPLICE_READ
|
||||||
ZFS_AC_KERNEL_SRC_SYNC_BDEV
|
ZFS_AC_KERNEL_SRC_SYNC_BDEV
|
||||||
ZFS_AC_KERNEL_SRC_MM_PAGE_SIZE
|
ZFS_AC_KERNEL_SRC_MM_PAGE_SIZE
|
||||||
|
@ -319,6 +320,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
|
||||||
ZFS_AC_KERNEL_WRITEPAGE_T
|
ZFS_AC_KERNEL_WRITEPAGE_T
|
||||||
ZFS_AC_KERNEL_RECLAIMED
|
ZFS_AC_KERNEL_RECLAIMED
|
||||||
ZFS_AC_KERNEL_REGISTER_SYSCTL_TABLE
|
ZFS_AC_KERNEL_REGISTER_SYSCTL_TABLE
|
||||||
|
ZFS_AC_KERNEL_PROC_HANDLER_CTL_TABLE_CONST
|
||||||
ZFS_AC_KERNEL_COPY_SPLICE_READ
|
ZFS_AC_KERNEL_COPY_SPLICE_READ
|
||||||
ZFS_AC_KERNEL_SYNC_BDEV
|
ZFS_AC_KERNEL_SYNC_BDEV
|
||||||
ZFS_AC_KERNEL_MM_PAGE_SIZE
|
ZFS_AC_KERNEL_MM_PAGE_SIZE
|
||||||
|
|
|
@ -43,6 +43,12 @@ typedef struct ctl_table __no_const spl_ctl_table;
|
||||||
typedef struct ctl_table spl_ctl_table;
|
typedef struct ctl_table spl_ctl_table;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_PROC_HANDLER_CTL_TABLE_CONST
|
||||||
|
#define CONST_CTL_TABLE const struct ctl_table
|
||||||
|
#else
|
||||||
|
#define CONST_CTL_TABLE struct ctl_table
|
||||||
|
#endif
|
||||||
|
|
||||||
static unsigned long table_min = 0;
|
static unsigned long table_min = 0;
|
||||||
static unsigned long table_max = ~0;
|
static unsigned long table_max = ~0;
|
||||||
|
|
||||||
|
@ -60,7 +66,7 @@ struct proc_dir_entry *proc_spl_kstat = NULL;
|
||||||
|
|
||||||
#ifdef DEBUG_KMEM
|
#ifdef DEBUG_KMEM
|
||||||
static int
|
static int
|
||||||
proc_domemused(struct ctl_table *table, int write,
|
proc_domemused(CONST_CTL_TABLE *table, int write,
|
||||||
void __user *buffer, size_t *lenp, loff_t *ppos)
|
void __user *buffer, size_t *lenp, loff_t *ppos)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
@ -88,7 +94,7 @@ proc_domemused(struct ctl_table *table, int write,
|
||||||
#endif /* DEBUG_KMEM */
|
#endif /* DEBUG_KMEM */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
proc_doslab(struct ctl_table *table, int write,
|
proc_doslab(CONST_CTL_TABLE *table, int write,
|
||||||
void __user *buffer, size_t *lenp, loff_t *ppos)
|
void __user *buffer, size_t *lenp, loff_t *ppos)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
@ -135,7 +141,7 @@ proc_doslab(struct ctl_table *table, int write,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
proc_dohostid(struct ctl_table *table, int write,
|
proc_dohostid(CONST_CTL_TABLE *table, int write,
|
||||||
void __user *buffer, size_t *lenp, loff_t *ppos)
|
void __user *buffer, size_t *lenp, loff_t *ppos)
|
||||||
{
|
{
|
||||||
char *end, str[32];
|
char *end, str[32];
|
||||||
|
|
Loading…
Reference in New Issue