mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
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: d406d26745
("cifs: skip alloc when request has no pages")
Reviewed-by: Paulo Alcantara <pc@cjr.nz>
Reviewed-by: "Fabio M. De Francesco" <fmdefrancesco@gmail.com>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
88603b6dc4
commit
67fcb2c598
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user