summarylogtreecommitdiffstats
path: root/0007-Linux-Refactor-test-for-32bit-compat.patch
diff options
context:
space:
mode:
Diffstat (limited to '0007-Linux-Refactor-test-for-32bit-compat.patch')
-rw-r--r--0007-Linux-Refactor-test-for-32bit-compat.patch212
1 files changed, 0 insertions, 212 deletions
diff --git a/0007-Linux-Refactor-test-for-32bit-compat.patch b/0007-Linux-Refactor-test-for-32bit-compat.patch
deleted file mode 100644
index 89137c7c8d06..000000000000
--- a/0007-Linux-Refactor-test-for-32bit-compat.patch
+++ /dev/null
@@ -1,212 +0,0 @@
-From 7efd65a984e5b50904e556992f533c460d9fcf9e Mon Sep 17 00:00:00 2001
-From: Cheyenne Wills <cwills@sinenomine.net>
-Date: Fri, 29 Jan 2021 11:32:36 -0700
-Subject: [PATCH 7/8] Linux: Refactor test for 32bit compat
-
-Refactor the preprocessor checks for determining the method to test for
-32bit compatibility (64bit kernel performing work for a 32bit task) into
-a common inline function, 'afs_in_compat_syscall' that is defined in
-LINUX/osi_machdep.h. Update osi_ioctl.c and afs_syscall.c to use
-afs_in_compat_syscall.
-
-Add include afs/sysincludes into osi_machdep.h to ensure linux/compat.h
-is pulled for the functions called in afs_in_compat_syscall.
-
-Reviewed-on: https://gerrit.openafs.org/14500
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-(cherry picked from commit 32cc6b0796495e596262d84c428172a511f757c4)
-
-Change-Id: I746e5777737d49381c4a74627b79d2a61cbd4f8e
-Reviewed-on: https://gerrit.openafs.org/14510
-Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/afs/LINUX/osi_ioctl.c | 14 ++------
- src/afs/LINUX/osi_machdep.h | 40 +++++++++++++++++++++
- src/afs/afs_syscall.c | 70 +++----------------------------------
- 3 files changed, 47 insertions(+), 77 deletions(-)
-
-diff --git a/src/afs/LINUX/osi_ioctl.c b/src/afs/LINUX/osi_ioctl.c
-index 9ba076a1b..7d355674d 100644
---- a/src/afs/LINUX/osi_ioctl.c
-+++ b/src/afs/LINUX/osi_ioctl.c
-@@ -43,21 +43,13 @@ afs_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
- {
-
- struct afsprocdata sysargs;
--#ifdef NEED_IOCTL32
-- struct afsprocdata32 sysargs32;
--#endif
-
- if (cmd != VIOC_SYSCALL && cmd != VIOC_SYSCALL32) return -EINVAL;
-
- #ifdef NEED_IOCTL32
--# if defined(AFS_S390X_LINUX26_ENV)
-- if (test_thread_flag(TIF_31BIT))
--# elif defined(AFS_AMD64_LINUX20_ENV)
-- if (test_thread_flag(TIF_IA32))
--# else
-- if (test_thread_flag(TIF_32BIT))
--# endif /* AFS_S390X_LINUX26_ENV */
-- {
-+ if (afs_in_compat_syscall()) {
-+ struct afsprocdata32 sysargs32;
-+
- if (copy_from_user(&sysargs32, (void *)arg,
- sizeof(struct afsprocdata32)))
- return -EFAULT;
-diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h
-index 784829627..9ecdaf0bf 100644
---- a/src/afs/LINUX/osi_machdep.h
-+++ b/src/afs/LINUX/osi_machdep.h
-@@ -76,6 +76,8 @@
- #include "h/cred.h"
- #endif
-
-+#include "afs/sysincludes.h"
-+
- #if !defined(HAVE_LINUX_TIME_T)
- typedef time64_t time_t;
- #endif
-@@ -157,6 +159,44 @@ static inline long copyinstr(char *from, char *to, int count, int *length) {
- }
- #define copyout(F, T, C) (copy_to_user ((char*)(T), (char*)(F), (C)) > 0 ? EFAULT : 0)
-
-+/*
-+ * Test to see for 64/32bit compatibility mode
-+ * Return non-zero if in a 64bit kernel and handing a 32bit syscall
-+ */
-+#if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)
-+static inline int
-+afs_in_compat_syscall(void)
-+{
-+# if defined(AFS_SPARC64_LINUX26_ENV)
-+ return test_thread_flag(TIF_32BIT);
-+# elif defined(AFS_SPARC64_LINUX24_ENV)
-+ return (current->thread.flags & SPARC_FLAG_32BIT) != 0;
-+# elif defined(AFS_SPARC64_LINUX20_ENV)
-+ return (current->tss.flags & SPARC_FLAG_32BIT) != 0;
-+# elif defined(AFS_AMD64_LINUX26_ENV)
-+ return test_thread_flag(TIF_IA32);
-+# elif defined(AFS_AMD64_LINUX20_ENV)
-+ return (current->thread.flags & THREAD_IA32) != 0;
-+# elif defined(AFS_PPC64_LINUX26_ENV)
-+# if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO)
-+ return (current->thread_info->flags & _TIF_32BIT) != 0;
-+# else
-+ return (task_thread_info(current)->flags & _TIF_32BIT) != 0;
-+# endif
-+# elif defined(AFS_PPC64_LINUX20_ENV)
-+ return (current->thread.flags & PPC_FLAG_32BIT) != 0;
-+# elif defined(AFS_S390X_LINUX26_ENV)
-+ return test_thread_flag(TIF_31BIT);
-+# elif defined(AFS_S390X_LINUX20_ENV)
-+ return (current->thread.flags & S390_FLAG_31BIT) != 0;
-+# elif defined(AFS_ARM64_LINUX26_ENV)
-+ return is_compat_task();
-+# else
-+# error afs_in_compat_syscall not done for this linux
-+# endif
-+}
-+#endif /* AFS_LINUX_64BIT_KERNEL */
-+
- /* kernel print statements */
- #define printf(args...) printk(args)
- #define uprintf(args...) printk(args)
-diff --git a/src/afs/afs_syscall.c b/src/afs/afs_syscall.c
-index ce6afdf9a..9414f38b8 100644
---- a/src/afs/afs_syscall.c
-+++ b/src/afs/afs_syscall.c
-@@ -114,40 +114,9 @@ copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst)
- #endif /* defined(AFS_SGI_ENV) && (_MIPS_SZLONG==64) */
-
- #if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)
-- struct afs_ioctl32 dst32;
--
--#ifdef AFS_SPARC64_LINUX26_ENV
-- if (test_thread_flag(TIF_32BIT))
--#elif defined(AFS_SPARC64_LINUX24_ENV)
-- if (current->thread.flags & SPARC_FLAG_32BIT)
--#elif defined(AFS_SPARC64_LINUX20_ENV)
-- if (current->tss.flags & SPARC_FLAG_32BIT)
--
--#elif defined(AFS_AMD64_LINUX26_ENV)
-- if (test_thread_flag(TIF_IA32))
--#elif defined(AFS_AMD64_LINUX20_ENV)
-- if (current->thread.flags & THREAD_IA32)
--
--#elif defined(AFS_PPC64_LINUX26_ENV)
--#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO)
-- if (current->thread_info->flags & _TIF_32BIT)
--#else
-- if (task_thread_info(current)->flags & _TIF_32BIT)
--#endif
--#elif defined(AFS_PPC64_LINUX20_ENV)
-- if (current->thread.flags & PPC_FLAG_32BIT)
--
--#elif defined(AFS_S390X_LINUX26_ENV)
-- if (test_thread_flag(TIF_31BIT))
--#elif defined(AFS_S390X_LINUX20_ENV)
-- if (current->thread.flags & S390_FLAG_31BIT)
--#elif defined(AFS_ARM64_LINUX26_ENV)
-- if (is_compat_task())
-+ if (afs_in_compat_syscall()) {
-+ struct afs_ioctl32 dst32;
-
--#else
--#error pioctl32 not done for this linux
--#endif
-- {
- AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code);
- if (!code)
- afs_ioctl32_to_afs_ioctl(&dst32, dst);
-@@ -391,40 +360,9 @@ copyin_iparam(caddr_t cmarg, struct iparam *dst)
- #endif /* AFS_SUN5_64BIT_ENV */
-
- #if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)
-- struct iparam32 dst32;
--
--#ifdef AFS_SPARC64_LINUX26_ENV
-- if (test_thread_flag(TIF_32BIT))
--#elif defined(AFS_SPARC64_LINUX24_ENV)
-- if (current->thread.flags & SPARC_FLAG_32BIT)
--#elif defined(AFS_SPARC64_LINUX20_ENV)
-- if (current->tss.flags & SPARC_FLAG_32BIT)
--
--#elif defined(AFS_AMD64_LINUX26_ENV)
-- if (test_thread_flag(TIF_IA32))
--#elif defined(AFS_AMD64_LINUX20_ENV)
-- if (current->thread.flags & THREAD_IA32)
--
--#elif defined(AFS_PPC64_LINUX26_ENV)
--#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO)
-- if (current->thread_info->flags & _TIF_32BIT)
--#else
-- if (task_thread_info(current)->flags & _TIF_32BIT)
--#endif
--#elif defined(AFS_PPC64_LINUX20_ENV)
-- if (current->thread.flags & PPC_FLAG_32BIT)
--
--#elif defined(AFS_S390X_LINUX26_ENV)
-- if (test_thread_flag(TIF_31BIT))
--#elif defined(AFS_S390X_LINUX20_ENV)
-- if (current->thread.flags & S390_FLAG_31BIT)
--#elif defined(AFS_ARM64_LINUX26_ENV)
-- if (is_compat_task())
-+ if (afs_in_compat_syscall()) {
-+ struct iparam32 dst32;
-
--#else
--#error iparam32 not done for this linux platform
--#endif
-- {
- AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code);
- if (!code)
- iparam32_to_iparam(&dst32, dst);
---
-2.30.1
-