aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-04-14 18:31:03 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-14 18:31:03 -0400
commitca2ec32658db160745990496f0f4580056a5dc9f (patch)
treed211f239219c85214da46dc1cbad4184a81d0248 /drivers/scsi
parent6c8a53c9e6a151fffb07f8b4c34bd1e33dddd467 (diff)
parentfdc81f45e9f57858da6351836507fbcf1b7583ee (diff)
Merge branch 'for-linus-1' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs update from Al Viro: "Part one: - struct filename-related cleanups - saner iov_iter_init() replacements (and switching the syscalls to use of those) - ntfs switch to ->write_iter() (Anton) - aio cleanups and splitting iocb into common and async parts (Christoph) - assorted fixes (me, bfields, Andrew Elble) There's a lot more, including the completion of switchover to ->{read,write}_iter(), d_inode/d_backing_inode annotations, f_flags race fixes, etc, but that goes after #for-davem merge. David has pulled it, and once it's in I'll send the next vfs pull request" * 'for-linus-1' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (35 commits) sg_start_req(): use import_iovec() sg_start_req(): make sure that there's not too many elements in iovec blk_rq_map_user(): use import_single_range() sg_io(): use import_iovec() process_vm_access: switch to {compat_,}import_iovec() switch keyctl_instantiate_key_common() to iov_iter switch {compat_,}do_readv_writev() to {compat_,}import_iovec() aio_setup_vectored_rw(): switch to {compat_,}import_iovec() vmsplice_to_user(): switch to import_iovec() kill aio_setup_single_vector() aio: simplify arguments of aio_setup_..._rw() aio: lift iov_iter_init() into aio_setup_..._rw() lift iov_iter into {compat_,}do_readv_writev() NFS: fix BUG() crash in notify_change() with patch to chown_common() dcache: return -ESTALE not -EBUSY on distributed fs race NTFS: Version 2.1.32 - Update file write from aio_write to write_iter. VFS: Add iov_iter_fault_in_multipages_readable() drop bogus check in file_open_root() switch security_inode_getattr() to struct path * constify tomoyo_realpath_from_path() ...
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/sg.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index 2270bd51f9c2..9d7b7db75e4b 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -33,7 +33,6 @@ static int sg_version_num = 30536; /* 2 digits for each component */
33#include <linux/sched.h> 33#include <linux/sched.h>
34#include <linux/string.h> 34#include <linux/string.h>
35#include <linux/mm.h> 35#include <linux/mm.h>
36#include <linux/aio.h>
37#include <linux/errno.h> 36#include <linux/errno.h>
38#include <linux/mtio.h> 37#include <linux/mtio.h>
39#include <linux/ioctl.h> 38#include <linux/ioctl.h>
@@ -51,6 +50,7 @@ static int sg_version_num = 30536; /* 2 digits for each component */
51#include <linux/mutex.h> 50#include <linux/mutex.h>
52#include <linux/atomic.h> 51#include <linux/atomic.h>
53#include <linux/ratelimit.h> 52#include <linux/ratelimit.h>
53#include <linux/uio.h>
54 54
55#include "scsi.h" 55#include "scsi.h"
56#include <scsi/scsi_dbg.h> 56#include <scsi/scsi_dbg.h>
@@ -1745,17 +1745,14 @@ sg_start_req(Sg_request *srp, unsigned char *cmd)
1745 } 1745 }
1746 1746
1747 if (iov_count) { 1747 if (iov_count) {
1748 int size = sizeof(struct iovec) * iov_count; 1748 struct iovec *iov = NULL;
1749 struct iovec *iov;
1750 struct iov_iter i; 1749 struct iov_iter i;
1751 1750
1752 iov = memdup_user(hp->dxferp, size); 1751 res = import_iovec(rw, hp->dxferp, iov_count, 0, &iov, &i);
1753 if (IS_ERR(iov)) 1752 if (res < 0)
1754 return PTR_ERR(iov); 1753 return res;
1755 1754
1756 iov_iter_init(&i, rw, iov, iov_count, 1755 iov_iter_truncate(&i, hp->dxfer_len);
1757 min_t(size_t, hp->dxfer_len,
1758 iov_length(iov, iov_count)));
1759 1756
1760 res = blk_rq_map_user_iov(q, rq, md, &i, GFP_ATOMIC); 1757 res = blk_rq_map_user_iov(q, rq, md, &i, GFP_ATOMIC);
1761 kfree(iov); 1758 kfree(iov);