summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/mpage.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/mpage.c b/fs/mpage.c
index aadcd6f898fe..6a93622217e8 100644
--- a/fs/mpage.c
+++ b/fs/mpage.c
@@ -210,10 +210,11 @@ do_mpage_readpage(struct bio *bio, struct page *page, unsigned nr_pages,
}
if (first_hole != blocks_per_page) {
- memset(kmap(page) + (first_hole << blkbits), 0,
+ char *kaddr = kmap_atomic(page, KM_USER0);
+ memset(kaddr + (first_hole << blkbits), 0,
PAGE_CACHE_SIZE - (first_hole << blkbits));
flush_dcache_page(page);
- kunmap(page);
+ kunmap_atomic(kaddr, KM_USER0);
if (first_hole == 0) {
SetPageUptodate(page);
unlock_page(page);
@@ -427,12 +428,14 @@ mpage_writepage(struct bio *bio, struct page *page, get_block_t get_block,
end_index = inode->i_size >> PAGE_CACHE_SHIFT;
if (page->index >= end_index) {
unsigned offset = inode->i_size & (PAGE_CACHE_SIZE - 1);
+ char *kaddr;
if (page->index > end_index || !offset)
goto confused;
- memset(kmap(page) + offset, 0, PAGE_CACHE_SIZE - offset);
+ kaddr = kmap_atomic(page, KM_USER0);
+ memset(kaddr + offset, 0, PAGE_CACHE_SIZE - offset);
flush_dcache_page(page);
- kunmap(page);
+ kunmap_atomic(kaddr, KM_USER0);
}
page_is_mapped: