diff options
Diffstat (limited to 'kernel/dir.c')
-rw-r--r-- | kernel/dir.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/dir.c b/kernel/dir.c index 41f824c..91fa22c 100644 --- a/kernel/dir.c +++ b/kernel/dir.c @@ -416,7 +416,8 @@ int fuse_do_getattr(struct inode *inode) fuse_put_request(fc, req); if (!err) { if ((inode->i_mode ^ arg.attr.mode) & S_IFMT) { - make_bad_inode(inode); + if (get_node_id(inode) != FUSE_ROOT_ID) + make_bad_inode(inode); err = -EIO; } else { struct fuse_inode *fi = get_fuse_inode(inode); @@ -757,7 +758,8 @@ static int fuse_setattr(struct dentry *entry, struct iattr *attr) fuse_put_request(fc, req); if (!err) { if ((inode->i_mode ^ outarg.attr.mode) & S_IFMT) { - make_bad_inode(inode); + if (get_node_id(inode) != FUSE_ROOT_ID) + make_bad_inode(inode); err = -EIO; } else { if (is_truncate) { |