aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/cifs/file.c')
-rw-r--r--fs/cifs/file.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 18a1e1d6671f..1cd0e2eefc66 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -2884,7 +2884,15 @@ cifs_readdata_to_iov(struct cifs_readdata *rdata, struct iov_iter *iter)
2884 for (i = 0; i < rdata->nr_pages; i++) { 2884 for (i = 0; i < rdata->nr_pages; i++) {
2885 struct page *page = rdata->pages[i]; 2885 struct page *page = rdata->pages[i];
2886 size_t copy = min_t(size_t, remaining, PAGE_SIZE); 2886 size_t copy = min_t(size_t, remaining, PAGE_SIZE);
2887 size_t written = copy_page_to_iter(page, 0, copy, iter); 2887 size_t written;
2888
2889 if (unlikely(iter->type & ITER_PIPE)) {
2890 void *addr = kmap_atomic(page);
2891
2892 written = copy_to_iter(addr, copy, iter);
2893 kunmap_atomic(addr);
2894 } else
2895 written = copy_page_to_iter(page, 0, copy, iter);
2888 remaining -= written; 2896 remaining -= written;
2889 if (written < copy && iov_iter_count(iter) > 0) 2897 if (written < copy && iov_iter_count(iter) > 0)
2890 break; 2898 break;