From b084fe4bb9f8ed890a758ca37faba8aec8bce7ee Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Fri, 15 Nov 2002 18:53:08 -0800 Subject: [PATCH] kmap->kmap_atomic in mpage.c Replace some kmaps in mpage.c with kmap_atomic. --- fs/mpage.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'fs') 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: -- cgit v1.2.3