diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2014-02-05 10:22:50 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2014-04-01 23:19:25 -0400 |
commit | c61c70384fad407bfcb066c3fb9271164d630212 (patch) | |
tree | 662d34e8b1f7dc18f4d702a30f45aad29a52fda2 | |
parent | 480402e18def5514c9dc8cb04e3c0e7482ff2b86 (diff) | |
download | linux-stable-c61c70384fad407bfcb066c3fb9271164d630212.tar.gz linux-stable-c61c70384fad407bfcb066c3fb9271164d630212.tar.bz2 linux-stable-c61c70384fad407bfcb066c3fb9271164d630212.zip |
untangling process_vm_..., part 2
move iov to caller's stack frame; the value we assign to it on the
next call of process_vm_rw_pages() is equal to the value it had
when the last time we were leaving process_vm_rw_pages().
drop lvec argument of process_vm_rw_pages() - it's not used anymore.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | mm/process_vm_access.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/mm/process_vm_access.c b/mm/process_vm_access.c index 7b8d63e6c30b..186ec5db6090 100644 --- a/mm/process_vm_access.c +++ b/mm/process_vm_access.c @@ -45,7 +45,7 @@ static int process_vm_rw_pages(struct task_struct *task, unsigned long pa, unsigned long start_offset, unsigned long len, - const struct iovec *lvec, + const struct iovec **iovp, unsigned long lvec_cnt, unsigned long *lvec_current, size_t *lvec_offset, @@ -60,7 +60,7 @@ static int process_vm_rw_pages(struct task_struct *task, int ret; ssize_t bytes_to_copy; ssize_t rc = 0; - const struct iovec *iov = lvec + *lvec_current; + const struct iovec *iov = *iovp; *bytes_copied = 0; @@ -149,6 +149,7 @@ end: put_page(process_pages[j]); } + *iovp = iov; return rc; } @@ -192,6 +193,7 @@ static int process_vm_rw_single_vec(unsigned long addr, unsigned long nr_pages_to_copy; unsigned long max_pages_per_loop = PVM_MAX_KMALLOC_PAGES / sizeof(struct pages *); + const struct iovec *iov = lvec + *lvec_current; *bytes_copied = 0; @@ -206,7 +208,7 @@ static int process_vm_rw_single_vec(unsigned long addr, rc = process_vm_rw_pages(task, mm, process_pages, pa, start_offset, len, - lvec, lvec_cnt, + &iov, lvec_cnt, lvec_current, lvec_offset, vm_write, nr_pages_to_copy, &bytes_copied_loop); |