|
@@ -809,11 +809,9 @@ static int fuse_copy_page(struct fuse_copy_state *cs, struct page **pagep,
|
|
|
int err;
|
|
|
struct page *page = *pagep;
|
|
|
|
|
|
- if (page && zeroing && count < PAGE_SIZE) {
|
|
|
- void *mapaddr = kmap_atomic(page, KM_USER1);
|
|
|
- clear_page(mapaddr);
|
|
|
- kunmap_atomic(mapaddr, KM_USER1);
|
|
|
- }
|
|
|
+ if (page && zeroing && count < PAGE_SIZE)
|
|
|
+ clear_highpage(page);
|
|
|
+
|
|
|
while (count) {
|
|
|
if (cs->write && cs->pipebufs && page) {
|
|
|
return fuse_ref_page(cs, page, offset, count);
|
|
@@ -830,10 +828,10 @@ static int fuse_copy_page(struct fuse_copy_state *cs, struct page **pagep,
|
|
|
}
|
|
|
}
|
|
|
if (page) {
|
|
|
- void *mapaddr = kmap_atomic(page, KM_USER1);
|
|
|
+ void *mapaddr = kmap_atomic(page, KM_USER0);
|
|
|
void *buf = mapaddr + offset;
|
|
|
offset += fuse_copy_do(cs, &buf, &count);
|
|
|
- kunmap_atomic(mapaddr, KM_USER1);
|
|
|
+ kunmap_atomic(mapaddr, KM_USER0);
|
|
|
} else
|
|
|
offset += fuse_copy_do(cs, NULL, &count);
|
|
|
}
|