fix
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 @@
 	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 @@
 	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) {