From: Benjamin Kaduk Date: Sun, 25 Oct 2020 18:27:37 +0000 (-0700) Subject: Import upstream patch for linux kernel 5.9 support X-Git-Tag: debian/1.8.6-4~2 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=0c0d2f873fa56605f93828cf1ac7fb9049f5457d;p=packages%2Fo%2Fopenafs.git Import upstream patch for linux kernel 5.9 support Change-Id: I1fff592e885725cc7d502d16568b959b84bf7ff6 --- 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 index 000000000..9f80e9e3f --- /dev/null +++ b/debian/patches/0011-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch @@ -0,0 +1,166 @@ +From: Cheyenne Wills +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 +Tested-by: Benjamin Kaduk +(cherry picked from commit 13a49aaf0d5c43bce08135edaabb65587e1a8031) + +Change-Id: I6dc5ae5b32031641f4a021a31630390a91d834fe +Reviewed-on: https://gerrit.openafs.org/14315 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Stephan Wiesand +(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 + #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 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, diff --git a/debian/patches/series b/debian/patches/series index cbae0c091..fc6ccf3c9 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -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