From 545dcd3fabd0156510d67847a5f7e21fc4175576 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Tue, 27 Sep 2005 21:45:21 -0700 Subject: [PATCH] --- yaml --- r: 9379 b: refs/heads/master c: ee4e52719ce474af339f4b81ece2ce9ecf920dfd h: refs/heads/master i: 9377: d27a6215822c99d581c17505daa82c5c6a6bcea8 9375: fe6f4a29ba96899ef128a504ea39f444d36a1d3e v: v3 --- [refs] | 2 +- trunk/fs/fuse/dir.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 4529df6c58e2..a4822f7fb401 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 909021ea7a8f4ef13af54935b87b03a20906e08a +refs/heads/master: ee4e52719ce474af339f4b81ece2ce9ecf920dfd diff --git a/trunk/fs/fuse/dir.c b/trunk/fs/fuse/dir.c index e79e49b3eec7..29f1e9f6e85c 100644 --- a/trunk/fs/fuse/dir.c +++ b/trunk/fs/fuse/dir.c @@ -96,6 +96,8 @@ static int fuse_lookup_iget(struct inode *dir, struct dentry *entry, fuse_lookup_init(req, dir, entry, &outarg); request_send(fc, req); err = req->out.h.error; + if (!err && (!outarg.nodeid || outarg.nodeid == FUSE_ROOT_ID)) + err = -EIO; if (!err) { inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation, &outarg.attr); @@ -152,6 +154,10 @@ static int create_new_entry(struct fuse_conn *fc, struct fuse_req *req, fuse_put_request(fc, req); return err; } + if (!outarg.nodeid || outarg.nodeid == FUSE_ROOT_ID) { + fuse_put_request(fc, req); + return -EIO; + } inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation, &outarg.attr); if (!inode) {