From b588f90ccb645b5140232a2c0c6efd9a7cf1ef8a Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Sun, 13 Jan 2019 21:37:40 +0000 Subject: [PATCH 1/2] scst: Disable the kernel_write() backport for RHEL 7 git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7891 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- scst/include/backport.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scst/include/backport.h b/scst/include/backport.h index 3348bd080..ca0d60682 100644 --- a/scst/include/backport.h +++ b/scst/include/backport.h @@ -449,7 +449,7 @@ kernel_read_backport(struct file *file, void *buf, size_t count, loff_t *pos) * See also commit 7bb307e894d5 ("export kernel_write(), convert open-coded * instances") # v3.10. */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) && !defined(RHEL_MAJOR) static inline ssize_t kernel_write_backport(struct file *file, void *buf, size_t count, loff_t *pos) { From b7fc7a25c645ee78e1954bb2ded841188566e432 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Sun, 13 Jan 2019 21:38:51 +0000 Subject: [PATCH 2/2] scst_lib: Also check 'fs' for older kernel versions git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7892 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- scst/src/scst_lib.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scst/src/scst_lib.c b/scst/src/scst_lib.c index 0aeed0ae8..e55cc87f4 100644 --- a/scst/src/scst_lib.c +++ b/scst/src/scst_lib.c @@ -5966,6 +5966,8 @@ ssize_t scst_read(struct file *file, void *buf, size_t count, loff_t *pos) return scst_readv(file, &iov, 1, pos); #else + WARN_ON_ONCE(scst_cmp_fs_ds() != 0); + return vfs_read(file, (void __force __user *)buf, count, pos); #endif } @@ -5984,6 +5986,8 @@ ssize_t scst_write(struct file *file, const void *buf, size_t count, return scst_writev(file, &iov, 1, pos); #else + WARN_ON_ONCE(scst_cmp_fs_ds() != 0); + return vfs_write(file, (void __force __user *)buf, count, pos); #endif } @@ -6011,8 +6015,12 @@ ssize_t scst_readv(struct file *file, const struct iovec *vec, #elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) || \ (defined(CONFIG_SUSE_KERNEL) && \ LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0)) + WARN_ON_ONCE(scst_cmp_fs_ds() != 0); + return vfs_readv(file, (const struct iovec __user *)vec, vlen, pos, 0); #else + WARN_ON_ONCE(scst_cmp_fs_ds() != 0); + return vfs_readv(file, (const struct iovec __user *)vec, vlen, pos); #endif }