@@ -70,9 +70,8 @@ static void *dir_get_page(struct inode *dir, unsigned long n, struct page **p)
7070 struct page * page = read_mapping_page (mapping , n , NULL );
7171 if (IS_ERR (page ))
7272 return ERR_CAST (page );
73- kmap (page );
7473 * p = page ;
75- return page_address (page );
74+ return kmap_local_page (page );
7675}
7776
7877static inline void * minix_next_entry (void * de , struct minix_sb_info * sbi )
@@ -123,13 +122,13 @@ static int minix_readdir(struct file *file, struct dir_context *ctx)
123122 unsigned l = strnlen (name , sbi -> s_namelen );
124123 if (!dir_emit (ctx , name , l ,
125124 inumber , DT_UNKNOWN )) {
126- dir_put_page (page );
125+ unmap_and_put_page (page , p );
127126 return 0 ;
128127 }
129128 }
130129 ctx -> pos += chunk_size ;
131130 }
132- dir_put_page (page );
131+ unmap_and_put_page (page , kaddr );
133132 }
134133 return 0 ;
135134}
@@ -189,7 +188,7 @@ minix_dirent *minix_find_entry(struct dentry *dentry, struct page **res_page)
189188 if (namecompare (namelen , sbi -> s_namelen , name , namx ))
190189 goto found ;
191190 }
192- dir_put_page (page );
191+ unmap_and_put_page (page , kaddr );
193192 }
194193 return NULL ;
195194
@@ -255,7 +254,7 @@ int minix_add_link(struct dentry *dentry, struct inode *inode)
255254 goto out_unlock ;
256255 }
257256 unlock_page (page );
258- dir_put_page (page );
257+ unmap_and_put_page (page , kaddr );
259258 }
260259 BUG ();
261260 return - EINVAL ;
@@ -278,7 +277,7 @@ int minix_add_link(struct dentry *dentry, struct inode *inode)
278277 mark_inode_dirty (dir );
279278 err = minix_handle_dirsync (dir );
280279out_put :
281- dir_put_page (page );
280+ unmap_and_put_page (page , kaddr );
282281 return err ;
283282out_unlock :
284283 unlock_page (page );
@@ -324,7 +323,7 @@ int minix_make_empty(struct inode *inode, struct inode *dir)
324323 goto fail ;
325324 }
326325
327- kaddr = kmap_atomic (page );
326+ kaddr = kmap_local_page (page );
328327 memset (kaddr , 0 , PAGE_SIZE );
329328
330329 if (sbi -> s_version == MINIX_V3 ) {
@@ -344,7 +343,7 @@ int minix_make_empty(struct inode *inode, struct inode *dir)
344343 de -> inode = dir -> i_ino ;
345344 strcpy (de -> name , ".." );
346345 }
347- kunmap_atomic (kaddr );
346+ kunmap_local (kaddr );
348347
349348 dir_commit_chunk (page , 0 , 2 * sbi -> s_dirsize );
350349 err = minix_handle_dirsync (inode );
@@ -361,11 +360,11 @@ int minix_empty_dir(struct inode * inode)
361360 struct page * page = NULL ;
362361 unsigned long i , npages = dir_pages (inode );
363362 struct minix_sb_info * sbi = minix_sb (inode -> i_sb );
364- char * name ;
363+ char * name , * kaddr ;
365364 __u32 inumber ;
366365
367366 for (i = 0 ; i < npages ; i ++ ) {
368- char * p , * kaddr , * limit ;
367+ char * p , * limit ;
369368
370369 kaddr = dir_get_page (inode , i , & page );
371370 if (IS_ERR (kaddr ))
@@ -396,12 +395,12 @@ int minix_empty_dir(struct inode * inode)
396395 goto not_empty ;
397396 }
398397 }
399- dir_put_page (page );
398+ unmap_and_put_page (page , kaddr );
400399 }
401400 return 1 ;
402401
403402not_empty :
404- dir_put_page (page );
403+ unmap_and_put_page (page , kaddr );
405404 return 0 ;
406405}
407406
@@ -455,7 +454,7 @@ ino_t minix_inode_by_name(struct dentry *dentry)
455454 res = ((minix3_dirent * ) de )-> inode ;
456455 else
457456 res = de -> inode ;
458- dir_put_page (page );
457+ unmap_and_put_page (page , de );
459458 }
460459 return res ;
461460}
0 commit comments