Linux: Include linux/uaccess.h rather than asm/uaccess.h if present 14/12714/3
authorSeth Forshee <seth.forshee@canonical.com>
Tue, 22 Aug 2017 12:59:11 +0000 (07:59 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Tue, 29 Aug 2017 03:04:18 +0000 (23:04 -0400)
Starting with Linux 4.12 there is a module build error on s390
due to asm/uaccess.h using a macro defined in the common header.
The common header has been around since 2.6.18 and has always
included asm/uaccess.h, so switch to using the common header
whenever it is present.

Change-Id: Iaab0d7652483a2a2b1f144f3e90b6d3b902c146d
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Reviewed-on: https://gerrit.openafs.org/12714
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

acinclude.m4
src/afs/LINUX/osi_machdep.h
src/afs/sysincludes.h
src/rx/LINUX/rx_knet.c

index 38e6161..0d28d44 100644 (file)
@@ -939,6 +939,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 AC_CHECK_LINUX_HEADER([semaphore.h])
                 AC_CHECK_LINUX_HEADER([seq_file.h])
                 AC_CHECK_LINUX_HEADER([sched/signal.h])
+                AC_CHECK_LINUX_HEADER([uaccess.h])
 
                 dnl Type existence checks
                 AC_CHECK_LINUX_TYPE([struct vfs_path], [dcache.h])
index 9008f77..ce8cabf 100644 (file)
@@ -123,7 +123,11 @@ wakeup(void *event)
 #define IsAfsVnode(V) ((V)->i_sb == afs_globalVFS)     /* test superblock instead */
 #define SetAfsVnode(V)                                 /* unnecessary */
 
+#if defined(HAVE_LINUX_UACCESS_H)
+#include <linux/uaccess.h>
+#else
 #include <asm/uaccess.h>
+#endif
 
 #define copyin(F, T, C)  (copy_from_user ((char*)(T), (char*)(F), (C)) > 0 ? EFAULT : 0)
 static inline long copyinstr(char *from, char *to, int count, int *length) {
index d0e58a7..629b3e6 100644 (file)
@@ -145,7 +145,11 @@ struct coda_inode_info {
 struct xfs_inode_info {
 };
 # endif
-# include <asm/uaccess.h>
+# if defined(HAVE_LINUX_UACCESS_H)
+#  include <linux/uaccess.h>
+# else
+#  include <asm/uaccess.h>
+# endif
 # include <linux/list.h>
 # include <linux/dcache.h>
 # include <linux/mount.h>
index 3398b2d..dea64fb 100644 (file)
 #include "rx_peer.h"
 #include "rx_packet.h"
 #include "rx_internal.h"
+#if defined(HAVE_LINUX_UACCESS_H)
+#include <linux/uaccess.h>
+#else
 #include <asm/uaccess.h>
+#endif
 #ifdef AFS_RXERRQ_ENV
 #include <linux/errqueue.h>
 #include <linux/icmp.h>