summarylogtreecommitdiffstats
path: root/0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch
diff options
context:
space:
mode:
Diffstat (limited to '0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch')
-rw-r--r--0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch169
1 files changed, 169 insertions, 0 deletions
diff --git a/0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch b/0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch
new file mode 100644
index 00000000000..476ca39b7ff
--- /dev/null
+++ b/0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch
@@ -0,0 +1,169 @@
+From e7f32efde6b4cf8c4a69768826c9fa2509bb98a2 Mon Sep 17 00:00:00 2001
+From: Cheyenne Wills <cwills@sinenomine.net>
+Date: Fri, 21 Aug 2020 10:37:51 -0600
+Subject: [PATCH 5/5] 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.
+
+Reviewed-on: https://gerrit.openafs.org/14300
+Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+Tested-by: Benjamin Kaduk <kaduk@mit.edu>
+(cherry picked from commit 13a49aaf0d5c43bce08135edaabb65587e1a8031)
+
+Change-Id: I6dc5ae5b32031641f4a021a31630390a91d834fe
+Reviewed-on: https://gerrit.openafs.org/14315
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+---
+ 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 1646a1518..9ba076a1b 100644
+--- a/src/afs/LINUX/osi_ioctl.c
++++ b/src/afs/LINUX/osi_ioctl.c
+@@ -25,10 +25,6 @@
+ #include <asm/ia32_unistd.h>
+ #endif
+
+-#if defined(AFS_SPARC64_LINUX26_ENV) && defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL)
+-#include <linux/ioctl32.h>
+-#endif
+-
+ #include <linux/slab.h>
+ #include <linux/init.h>
+ #include <linux/sched.h>
+@@ -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 36a4f685e..ba4f1e6af 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,
+--
+2.28.0
+