]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Import upstream patch for linux kernel 5.9 support
authorBenjamin Kaduk <kaduk@mit.edu>
Sun, 25 Oct 2020 18:27:37 +0000 (11:27 -0700)
committerBenjamin Kaduk <kaduk@mit.edu>
Sun, 25 Oct 2020 18:32:49 +0000 (11:32 -0700)
Change-Id: I1fff592e885725cc7d502d16568b959b84bf7ff6

debian/patches/0011-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch [new file with mode: 0644]
debian/patches/series

diff --git a/debian/patches/0011-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch b/debian/patches/0011-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch
new file mode 100644 (file)
index 0000000..9f80e9e
--- /dev/null
@@ -0,0 +1,166 @@
+From: Cheyenne Wills <cwills@sinenomine.net>
+Date: Fri, 21 Aug 2020 10:37:51 -0600
+Subject: 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>
+(cherry picked from commit e7902252f15acfc28453c531f6fa3b29c9c91b92)
+---
+ 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 <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 36a4f68..ba4f1e6 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,
index cbae0c09179251df4396ee0e8fa05eba4e3ccffe..fc6ccf3c98f00a18fd5a0df78740a30890508f52 100644 (file)
@@ -8,3 +8,4 @@
 0008-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch
 0009-LINUX-5.8-do-not-set-name-field-in-backing_dev_info.patch
 0010-LINUX-5.8-use-lru_cache_add.patch
+0011-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch