Commit 67fcb2c5 authored by Ira Weiny's avatar Ira Weiny Committed by Steve French

cifs: Fix kmap_local_page() unmapping

kmap_local_page() requires kunmap_local() to unmap the mapping.  In
addition memcpy_page() is provided to perform this common memcpy
pattern.

Replace the kmap_local_page() and broken kunmap() with memcpy_page()

Fixes: d406d267 ("cifs: skip alloc when request has no pages")
Reviewed-by: default avatarPaulo Alcantara <pc@cjr.nz>
Reviewed-by: default avatar"Fabio M. De Francesco" <fmdefrancesco@gmail.com>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: default avatarIra Weiny <ira.weiny@intel.com>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 88603b6d
......@@ -4488,17 +4488,12 @@ smb3_init_transform_rq(struct TCP_Server_Info *server, int num_rqst,
/* copy pages form the old */
for (j = 0; j < npages; j++) {
char *dst, *src;
unsigned int offset, len;
rqst_page_get_length(new, j, &len, &offset);
dst = kmap_local_page(new->rq_pages[j]) + offset;
src = kmap_local_page(old->rq_pages[j]) + offset;
memcpy(dst, src, len);
kunmap(new->rq_pages[j]);
kunmap(old->rq_pages[j]);
memcpy_page(new->rq_pages[j], offset,
old->rq_pages[j], offset, len);
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment