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>
This commit is contained in:
Родитель
480402e18d
Коммит
c61c70384f
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче