diff options
Diffstat (limited to 'fs/jffs2/fs.c')
-rw-r--r-- | fs/jffs2/fs.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c index ea1f37d4fc58..4607cdc4c46d 100644 --- a/fs/jffs2/fs.c +++ b/fs/jffs2/fs.c | |||
@@ -185,7 +185,12 @@ static int jffs2_do_setattr (struct inode *inode, struct iattr *iattr) | |||
185 | 185 | ||
186 | int jffs2_setattr(struct dentry *dentry, struct iattr *iattr) | 186 | int jffs2_setattr(struct dentry *dentry, struct iattr *iattr) |
187 | { | 187 | { |
188 | return jffs2_do_setattr(dentry->d_inode, iattr); | 188 | int rc; |
189 | |||
190 | rc = jffs2_do_setattr(dentry->d_inode, iattr); | ||
191 | if (!rc && (iattr->ia_valid & ATTR_MODE)) | ||
192 | rc = jffs2_acl_chmod(dentry->d_inode); | ||
193 | return rc; | ||
189 | } | 194 | } |
190 | 195 | ||
191 | int jffs2_statfs(struct super_block *sb, struct kstatfs *buf) | 196 | int jffs2_statfs(struct super_block *sb, struct kstatfs *buf) |
@@ -224,6 +229,7 @@ void jffs2_clear_inode (struct inode *inode) | |||
224 | 229 | ||
225 | D1(printk(KERN_DEBUG "jffs2_clear_inode(): ino #%lu mode %o\n", inode->i_ino, inode->i_mode)); | 230 | D1(printk(KERN_DEBUG "jffs2_clear_inode(): ino #%lu mode %o\n", inode->i_ino, inode->i_mode)); |
226 | 231 | ||
232 | jffs2_xattr_delete_inode(c, f->inocache); | ||
227 | jffs2_do_clear_inode(c, f); | 233 | jffs2_do_clear_inode(c, f); |
228 | } | 234 | } |
229 | 235 | ||
@@ -497,6 +503,8 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent) | |||
497 | } | 503 | } |
498 | memset(c->inocache_list, 0, INOCACHE_HASHSIZE * sizeof(struct jffs2_inode_cache *)); | 504 | memset(c->inocache_list, 0, INOCACHE_HASHSIZE * sizeof(struct jffs2_inode_cache *)); |
499 | 505 | ||
506 | jffs2_init_xattr_subsystem(c); | ||
507 | |||
500 | if ((ret = jffs2_do_mount_fs(c))) | 508 | if ((ret = jffs2_do_mount_fs(c))) |
501 | goto out_inohash; | 509 | goto out_inohash; |
502 | 510 | ||
@@ -531,6 +539,7 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent) | |||
531 | else | 539 | else |
532 | kfree(c->blocks); | 540 | kfree(c->blocks); |
533 | out_inohash: | 541 | out_inohash: |
542 | jffs2_clear_xattr_subsystem(c); | ||
534 | kfree(c->inocache_list); | 543 | kfree(c->inocache_list); |
535 | out_wbuf: | 544 | out_wbuf: |
536 | jffs2_flash_cleanup(c); | 545 | jffs2_flash_cleanup(c); |