diff options
Diffstat (limited to 'fs/jffs2/fs.c')
| -rw-r--r-- | fs/jffs2/fs.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c index a69e426435dd..601afd1afddf 100644 --- a/fs/jffs2/fs.c +++ b/fs/jffs2/fs.c | |||
| @@ -242,7 +242,7 @@ void jffs2_evict_inode (struct inode *inode) | |||
| 242 | 242 | ||
| 243 | jffs2_dbg(1, "%s(): ino #%lu mode %o\n", | 243 | jffs2_dbg(1, "%s(): ino #%lu mode %o\n", |
| 244 | __func__, inode->i_ino, inode->i_mode); | 244 | __func__, inode->i_ino, inode->i_mode); |
| 245 | truncate_inode_pages(&inode->i_data, 0); | 245 | truncate_inode_pages_final(&inode->i_data); |
| 246 | clear_inode(inode); | 246 | clear_inode(inode); |
| 247 | jffs2_do_clear_inode(c, f); | 247 | jffs2_do_clear_inode(c, f); |
| 248 | } | 248 | } |
| @@ -457,12 +457,14 @@ struct inode *jffs2_new_inode (struct inode *dir_i, umode_t mode, struct jffs2_r | |||
| 457 | The umask is only applied if there's no default ACL */ | 457 | The umask is only applied if there's no default ACL */ |
| 458 | ret = jffs2_init_acl_pre(dir_i, inode, &mode); | 458 | ret = jffs2_init_acl_pre(dir_i, inode, &mode); |
| 459 | if (ret) { | 459 | if (ret) { |
| 460 | make_bad_inode(inode); | 460 | mutex_unlock(&f->sem); |
| 461 | iput(inode); | 461 | make_bad_inode(inode); |
| 462 | return ERR_PTR(ret); | 462 | iput(inode); |
| 463 | return ERR_PTR(ret); | ||
| 463 | } | 464 | } |
| 464 | ret = jffs2_do_new_inode (c, f, mode, ri); | 465 | ret = jffs2_do_new_inode (c, f, mode, ri); |
| 465 | if (ret) { | 466 | if (ret) { |
| 467 | mutex_unlock(&f->sem); | ||
| 466 | make_bad_inode(inode); | 468 | make_bad_inode(inode); |
| 467 | iput(inode); | 469 | iput(inode); |
| 468 | return ERR_PTR(ret); | 470 | return ERR_PTR(ret); |
| @@ -479,6 +481,7 @@ struct inode *jffs2_new_inode (struct inode *dir_i, umode_t mode, struct jffs2_r | |||
| 479 | inode->i_size = 0; | 481 | inode->i_size = 0; |
| 480 | 482 | ||
| 481 | if (insert_inode_locked(inode) < 0) { | 483 | if (insert_inode_locked(inode) < 0) { |
| 484 | mutex_unlock(&f->sem); | ||
| 482 | make_bad_inode(inode); | 485 | make_bad_inode(inode); |
| 483 | iput(inode); | 486 | iput(inode); |
| 484 | return ERR_PTR(-EINVAL); | 487 | return ERR_PTR(-EINVAL); |
| @@ -687,7 +690,7 @@ unsigned char *jffs2_gc_fetch_page(struct jffs2_sb_info *c, | |||
| 687 | struct inode *inode = OFNI_EDONI_2SFFJ(f); | 690 | struct inode *inode = OFNI_EDONI_2SFFJ(f); |
| 688 | struct page *pg; | 691 | struct page *pg; |
| 689 | 692 | ||
| 690 | pg = read_cache_page_async(inode->i_mapping, offset >> PAGE_CACHE_SHIFT, | 693 | pg = read_cache_page(inode->i_mapping, offset >> PAGE_CACHE_SHIFT, |
| 691 | (void *)jffs2_do_readpage_unlock, inode); | 694 | (void *)jffs2_do_readpage_unlock, inode); |
| 692 | if (IS_ERR(pg)) | 695 | if (IS_ERR(pg)) |
| 693 | return (void *)pg; | 696 | return (void *)pg; |
