From: Al Viro Date: Wed, 5 Feb 2014 15:22:50 +0000 (-0500) Subject: untangling process_vm_..., part 2 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=c61c70384fad407bfcb066c3fb9271164d630212;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git 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 --- 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);