aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/dir.c
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2005-01-15 14:32:56 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2005-01-15 14:32:56 +0000
commitdbe0f6584164fe60b6eac6ffc4cd097b978e33a0 (patch)
tree907a79ea07b112fe360b45f76240aee26f801b61 /kernel/dir.c
parent5ef2a9bd077a6a3cfcbc7d8d3fdccbf4b397df62 (diff)
downloadlibfuse-dbe0f6584164fe60b6eac6ffc4cd097b978e33a0.tar.gz
fix
Diffstat (limited to 'kernel/dir.c')
-rw-r--r--kernel/dir.c6
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) {