mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	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
							
								
									92a8af0f8b
								
							
						
					
					
						commit
						464747ffd3
					
				| @ -25,3 +25,36 @@ AC_DEFUN([ZFS_AC_KERNEL_REGISTER_SYSCTL_TABLE], [ | ||||
| 		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]) | ||||
| 	]) | ||||
| ]) | ||||
|  | ||||
| @ -166,6 +166,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [ | ||||
| 	ZFS_AC_KERNEL_SRC_WRITEPAGE_T | ||||
| 	ZFS_AC_KERNEL_SRC_RECLAIMED | ||||
| 	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_SYNC_BDEV | ||||
| 	ZFS_AC_KERNEL_SRC_MM_PAGE_SIZE | ||||
| @ -317,6 +318,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [ | ||||
| 	ZFS_AC_KERNEL_WRITEPAGE_T | ||||
| 	ZFS_AC_KERNEL_RECLAIMED | ||||
| 	ZFS_AC_KERNEL_REGISTER_SYSCTL_TABLE | ||||
| 	ZFS_AC_KERNEL_PROC_HANDLER_CTL_TABLE_CONST | ||||
| 	ZFS_AC_KERNEL_COPY_SPLICE_READ | ||||
| 	ZFS_AC_KERNEL_SYNC_BDEV | ||||
| 	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; | ||||
| #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_max = ~0; | ||||
| 
 | ||||
| @ -60,7 +66,7 @@ struct proc_dir_entry *proc_spl_kstat = NULL; | ||||
| 
 | ||||
| #ifdef DEBUG_KMEM | ||||
| 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) | ||||
| { | ||||
| 	int rc = 0; | ||||
| @ -88,7 +94,7 @@ proc_domemused(struct ctl_table *table, int write, | ||||
| #endif /* DEBUG_KMEM */ | ||||
| 
 | ||||
| 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) | ||||
| { | ||||
| 	int rc = 0; | ||||
| @ -135,7 +141,7 @@ proc_doslab(struct ctl_table *table, int write, | ||||
| } | ||||
| 
 | ||||
| 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) | ||||
| { | ||||
| 	char *end, str[32]; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Rob Norris
						Rob Norris