From 13a49aaf0d5c43bce08135edaabb65587e1a8031 Mon Sep 17 00:00:00 2001 From: Cheyenne Wills Date: Mon, 17 Aug 2020 08:20:11 -0600 Subject: [PATCH] LINUX 5.9: Remove HAVE_UNLOCKED_IOCTL/COMPAT_IOCTL Linux-5.9-rc1 commit 'fs: remove the HAVE_UNLOCKED_IOCTL and HAVE_COMPAT_IOCTL defines' (4e24566a) removed the two referenced macros from the kernel. The support for unlocked_ioctl and compat_ioctl were introduced in Linux 2.6.11. Remove references to HAVE_UNLOCKED_IOCTL and HAVE_COMPAT_IOCTL using the assumption that they were always defined. Notes: With this change, building against kernels 2.6.10 and older will fail. RHEL4 (EOL in March 2017) used a 2.6.9 kernel. RHEL5 uses a 2.6.18 kernel. In linux-2.6.33-rc1 the commit messages for "staging: comedi: Remove check for HAVE_UNLOCKED_IOCTL" (00a1855c) and "Staging: comedi: remove check for HAVE_COMPAT_IOCTL" (5d7ae225) both state that all new kernels have support for unlocked_ioctl/compat_ioctl so the checks can be removed along with removing support for older kernels. Change-Id: Idd2716f3573ea455f8a5e1535bca584af0787717 Reviewed-on: https://gerrit.openafs.org/14300 Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk --- src/afs/LINUX/osi_ioctl.c | 25 ++----------------------- src/afs/LINUX/osi_vnodeops.c | 14 -------------- 2 files changed, 2 insertions(+), 37 deletions(-) diff --git a/src/afs/LINUX/osi_ioctl.c b/src/afs/LINUX/osi_ioctl.c index 1646a15..9ba076a 100644 --- a/src/afs/LINUX/osi_ioctl.c +++ b/src/afs/LINUX/osi_ioctl.c @@ -25,10 +25,6 @@ #include #endif -#if defined(AFS_SPARC64_LINUX26_ENV) && defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL) -#include -#endif - #include #include #include @@ -37,9 +33,6 @@ #include "osi_compat.h" extern struct proc_dir_entry *openafs_procfs; -#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL) -static int ioctl32_done; -#endif extern asmlinkage long afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4); @@ -85,12 +78,11 @@ afs_ioctl(struct inode *inode, struct file *file, unsigned int cmd, } } -#if defined(HAVE_UNLOCKED_IOCTL) || defined(HAVE_COMPAT_IOCTL) static long afs_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { return afs_ioctl(FILE_INODE(file), file, cmd, arg); } -#endif + #if defined(HAVE_LINUX_STRUCT_PROC_OPS) static struct proc_ops afs_syscall_ops = { .proc_ioctl = afs_unlocked_ioctl, @@ -100,16 +92,11 @@ static struct proc_ops afs_syscall_ops = { }; #else static struct file_operations afs_syscall_ops = { -# ifdef HAVE_UNLOCKED_IOCTL .unlocked_ioctl = afs_unlocked_ioctl, -# else - .ioctl = afs_ioctl, -# endif -# ifdef HAVE_COMPAT_IOCTL .compat_ioctl = afs_unlocked_ioctl, -# endif }; #endif /* HAVE_LINUX_STRUCT_PROC_OPS */ + void osi_ioctl_init(void) { @@ -121,18 +108,10 @@ osi_ioctl_init(void) entry->owner = THIS_MODULE; #endif -#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL) - if (register_ioctl32_conversion(VIOC_SYSCALL32, NULL) == 0) - ioctl32_done = 1; -#endif } void osi_ioctl_clean(void) { remove_proc_entry(PROC_SYSCALL_NAME, openafs_procfs); -#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL) - if (ioctl32_done) - unregister_ioctl32_conversion(VIOC_SYSCALL32); -#endif } diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c index d9bc952..8d6946f 100644 --- a/src/afs/LINUX/osi_vnodeops.c +++ b/src/afs/LINUX/osi_vnodeops.c @@ -589,13 +589,11 @@ out1: extern int afs_xioctl(struct inode *ip, struct file *fp, unsigned int com, unsigned long arg); -#if defined(HAVE_UNLOCKED_IOCTL) || defined(HAVE_COMPAT_IOCTL) static long afs_unlocked_xioctl(struct file *fp, unsigned int com, unsigned long arg) { return afs_xioctl(FILE_INODE(fp), fp, com, arg); } -#endif static int @@ -891,14 +889,8 @@ struct file_operations afs_dir_fops = { #else .readdir = afs_linux_readdir, #endif -#ifdef HAVE_UNLOCKED_IOCTL .unlocked_ioctl = afs_unlocked_xioctl, -#else - .ioctl = afs_xioctl, -#endif -#ifdef HAVE_COMPAT_IOCTL .compat_ioctl = afs_unlocked_xioctl, -#endif .open = afs_linux_open, .release = afs_linux_release, .llseek = default_llseek, @@ -926,14 +918,8 @@ struct file_operations afs_file_fops = { .read = afs_linux_read, .write = afs_linux_write, #endif -#ifdef HAVE_UNLOCKED_IOCTL .unlocked_ioctl = afs_unlocked_xioctl, -#else - .ioctl = afs_xioctl, -#endif -#ifdef HAVE_COMPAT_IOCTL .compat_ioctl = afs_unlocked_xioctl, -#endif .mmap = afs_linux_mmap, .open = afs_linux_open, .flush = afs_linux_flush, -- 1.9.4