diff options
Diffstat (limited to 'mm')
-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, | |||
45 | unsigned long pa, | 45 | unsigned long pa, |
46 | unsigned long start_offset, | 46 | unsigned long start_offset, |
47 | unsigned long len, | 47 | unsigned long len, |
48 | const struct iovec *lvec, | 48 | const struct iovec **iovp, |
49 | unsigned long lvec_cnt, | 49 | unsigned long lvec_cnt, |
50 | unsigned long *lvec_current, | 50 | unsigned long *lvec_current, |
51 | size_t *lvec_offset, | 51 | size_t *lvec_offset, |
@@ -60,7 +60,7 @@ static int process_vm_rw_pages(struct task_struct *task, | |||
60 | int ret; | 60 | int ret; |
61 | ssize_t bytes_to_copy; | 61 | ssize_t bytes_to_copy; |
62 | ssize_t rc = 0; | 62 | ssize_t rc = 0; |
63 | const struct iovec *iov = lvec + *lvec_current; | 63 | const struct iovec *iov = *iovp; |
64 | 64 | ||
65 | *bytes_copied = 0; | 65 | *bytes_copied = 0; |
66 | 66 | ||
@@ -149,6 +149,7 @@ end: | |||
149 | put_page(process_pages[j]); | 149 | put_page(process_pages[j]); |
150 | } | 150 | } |
151 | 151 | ||
152 | *iovp = iov; | ||
152 | return rc; | 153 | return rc; |
153 | } | 154 | } |
154 | 155 | ||
@@ -192,6 +193,7 @@ static int process_vm_rw_single_vec(unsigned long addr, | |||
192 | unsigned long nr_pages_to_copy; | 193 | unsigned long nr_pages_to_copy; |
193 | unsigned long max_pages_per_loop = PVM_MAX_KMALLOC_PAGES | 194 | unsigned long max_pages_per_loop = PVM_MAX_KMALLOC_PAGES |
194 | / sizeof(struct pages *); | 195 | / sizeof(struct pages *); |
196 | const struct iovec *iov = lvec + *lvec_current; | ||
195 | 197 | ||
196 | *bytes_copied = 0; | 198 | *bytes_copied = 0; |
197 | 199 | ||
@@ -206,7 +208,7 @@ static int process_vm_rw_single_vec(unsigned long addr, | |||
206 | 208 | ||
207 | rc = process_vm_rw_pages(task, mm, process_pages, pa, | 209 | rc = process_vm_rw_pages(task, mm, process_pages, pa, |
208 | start_offset, len, | 210 | start_offset, len, |
209 | lvec, lvec_cnt, | 211 | &iov, lvec_cnt, |
210 | lvec_current, lvec_offset, | 212 | lvec_current, lvec_offset, |
211 | vm_write, nr_pages_to_copy, | 213 | vm_write, nr_pages_to_copy, |
212 | &bytes_copied_loop); | 214 | &bytes_copied_loop); |