diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-14 18:31:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-14 18:31:03 -0400 |
commit | ca2ec32658db160745990496f0f4580056a5dc9f (patch) | |
tree | d211f239219c85214da46dc1cbad4184a81d0248 /drivers/scsi | |
parent | 6c8a53c9e6a151fffb07f8b4c34bd1e33dddd467 (diff) | |
parent | fdc81f45e9f57858da6351836507fbcf1b7583ee (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.c | 15 |
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); |