unlock_page(page);
 }
 
-static bool nilfs_check_page(struct page *page)
+static bool nilfs_check_page(struct page *page, char *kaddr)
 {
        struct inode *dir = page->mapping->host;
        struct super_block *sb = dir->i_sb;
        unsigned int chunk_size = nilfs_chunk_size(dir);
-       char *kaddr = page_address(page);
        unsigned int offs, rec_len;
        unsigned int limit = PAGE_SIZE;
        struct nilfs_dir_entry *p;
 
        kaddr = kmap(page);
        if (unlikely(!PageChecked(page))) {
-               if (!nilfs_check_page(page))
+               if (!nilfs_check_page(page, kaddr))
                        goto fail;
        }