diff options
Diffstat (limited to '0003-Linux-Use-kernel_read-kernel_write-when-__vfs-varian.patch')
-rw-r--r-- | 0003-Linux-Use-kernel_read-kernel_write-when-__vfs-varian.patch | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/0003-Linux-Use-kernel_read-kernel_write-when-__vfs-varian.patch b/0003-Linux-Use-kernel_read-kernel_write-when-__vfs-varian.patch deleted file mode 100644 index ec26c99fb220..000000000000 --- a/0003-Linux-Use-kernel_read-kernel_write-when-__vfs-varian.patch +++ /dev/null @@ -1,142 +0,0 @@ -From 8bcc735dac68eab9fa4c3f95348c0d2c64aa569b Mon Sep 17 00:00:00 2001 -From: Damien Diederen <ddiederen@sinenomine.net> -Date: Mon, 18 Sep 2017 12:18:39 +0200 -Subject: [PATCH 3/3] Linux: Use kernel_read/kernel_write when __vfs variants - are unavailable - -We hide the uses of set_fs/get_fs behind a macro, as those functions -are likely to soon become unavailable: - -> Christoph Hellwig suggested removing all calls outside of the core -> filesystem and architecture code; Andy Lutomirski went one step -> further and said they should all go. - - https://lwn.net/Articles/722267/ - -Reviewed-on: https://gerrit.openafs.org/12729 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Mark Vitale <mvitale@sinenomine.net> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit 5ee516b3789d3545f3d78fb3aba2480308359945) - -Reviewed-on: https://gerrit.openafs.org/12737 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Reviewed-by: Mark Vitale <mvitale@sinenomine.net> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit d93f80622370f50d7bce5c5b00cd062f15ee9eba) - -Change-Id: Ib4515c858d0a06d3706ec7de212c35551d3e7240 ---- - acinclude.m4 | 3 +++ - src/afs/LINUX/osi_compat.h | 12 ++++++++++++ - src/afs/LINUX/osi_file.c | 6 ++++++ - src/afs/LINUX/osi_vnodeops.c | 2 +- - 4 files changed, 22 insertions(+), 1 deletion(-) - -diff --git a/acinclude.m4 b/acinclude.m4 -index 8353ca597..94b943622 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -942,6 +942,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) - AC_CHECK_LINUX_FUNC([__vfs_write], - [#include <linux/fs.h>], - [__vfs_write(NULL, NULL, 0, NULL);]) -+ AC_CHECK_LINUX_FUNC([kernel_write], -+ [#include <linux/fs.h>], -+ [kernel_write(NULL, NULL, 0, NULL);]) - AC_CHECK_LINUX_FUNC([bdi_init], - [#include <linux/backing-dev.h>], - [bdi_init(NULL);]) -diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h -index 9ebe9c178..9871535f0 100644 ---- a/src/afs/LINUX/osi_compat.h -+++ b/src/afs/LINUX/osi_compat.h -@@ -592,11 +592,21 @@ afs_d_invalidate(struct dentry *dp) - #endif - } - -+#if defined(HAVE_LINUX___VFS_WRITE) -+# define AFS_FILE_NEEDS_SET_FS 1 -+#elif defined(HAVE_LINUX_KERNEL_WRITE) -+/* #undef AFS_FILE_NEEDS_SET_FS */ -+#else -+# define AFS_FILE_NEEDS_SET_FS 1 -+#endif -+ - static inline int - afs_file_read(struct file *filp, char __user *buf, size_t len, loff_t *pos) - { - #if defined(HAVE_LINUX___VFS_WRITE) - return __vfs_read(filp, buf, len, pos); -+#elif defined(HAVE_LINUX_KERNEL_WRITE) -+ return kernel_read(filp, buf, len, pos); - #else - return filp->f_op->read(filp, buf, len, pos); - #endif -@@ -607,6 +617,8 @@ afs_file_write(struct file *filp, char __user *buf, size_t len, loff_t *pos) - { - #if defined(HAVE_LINUX___VFS_WRITE) - return __vfs_write(filp, buf, len, pos); -+#elif defined(HAVE_LINUX_KERNEL_WRITE) -+ return kernel_write(filp, buf, len, pos); - #else - return filp->f_op->write(filp, buf, len, pos); - #endif -diff --git a/src/afs/LINUX/osi_file.c b/src/afs/LINUX/osi_file.c -index f889fd16b..a028ee740 100644 ---- a/src/afs/LINUX/osi_file.c -+++ b/src/afs/LINUX/osi_file.c -@@ -357,7 +357,9 @@ int - osi_rdwr(struct osi_file *osifile, struct uio *uiop, int rw) - { - struct file *filp = osifile->filp; -+#ifdef AFS_FILE_NEEDS_SET_FS - mm_segment_t old_fs = {0}; -+#endif /* AFS_FILE_NEEDS_SET_FS */ - int code = 0; - struct iovec *iov; - size_t count; -@@ -367,11 +369,13 @@ osi_rdwr(struct osi_file *osifile, struct uio *uiop, int rw) - savelim = current->TASK_STRUCT_RLIM[RLIMIT_FSIZE].rlim_cur; - current->TASK_STRUCT_RLIM[RLIMIT_FSIZE].rlim_cur = RLIM_INFINITY; - -+#ifdef AFS_FILE_NEEDS_SET_FS - if (uiop->uio_seg == AFS_UIOSYS) { - /* Switch into user space */ - old_fs = get_fs(); - set_fs(get_ds()); - } -+#endif /* AFS_FILE_NEEDS_SET_FS */ - - while (code == 0 && uiop->uio_resid > 0 && uiop->uio_iovcnt > 0) { - iov = uiop->uio_iov; -@@ -408,10 +412,12 @@ osi_rdwr(struct osi_file *osifile, struct uio *uiop, int rw) - code = 0; - } - -+#ifdef AFS_FILE_NEEDS_SET_FS - if (uiop->uio_seg == AFS_UIOSYS) { - /* Switch back into kernel space */ - set_fs(old_fs); - } -+#endif /* AFS_FILE_NEEDS_SET_FS */ - - current->TASK_STRUCT_RLIM[RLIMIT_FSIZE].rlim_cur = savelim; - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index 3d9d71791..051452b34 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -807,7 +807,7 @@ struct file_operations afs_file_fops = { - #ifdef STRUCT_FILE_OPERATIONS_HAS_READ_ITER - .read_iter = afs_linux_read_iter, - .write_iter = afs_linux_write_iter, --# if !defined(HAVE_LINUX___VFS_WRITE) -+# if !defined(HAVE_LINUX___VFS_WRITE) && !defined(HAVE_LINUX_KERNEL_WRITE) - .read = new_sync_read, - .write = new_sync_write, - # endif --- -2.15.1 - |