From: Miklos Szeredi Date: Wed, 27 May 2009 10:17:24 +0000 (+0000) Subject: Don't call forget_node() if the lookup was negative and write() X-Git-Tag: fuse_2_8_0~13 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=0db74cc67c5e14e54f2e61bd586139776ab56452;p=qemu-gpiodev%2Flibfuse.git Don't call forget_node() if the lookup was negative and write() for the reply returned ENOENT. Reported by John Haxby --- diff --git a/ChangeLog b/ChangeLog index b976a70..9791a7f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-05-27 Miklos Szeredi + + * Don't call forget_node() if the lookup was negative and write() + for the reply returned ENOENT. Reported by John Haxby + 2009-05-25 Miklos Szeredi * Add FUSE_CAP_EXPORT_SUPPORT to fuse_common.h diff --git a/lib/fuse.c b/lib/fuse.c index 3f811ae..8c27cd3 100644 --- a/lib/fuse.c +++ b/lib/fuse.c @@ -1908,8 +1908,11 @@ static void reply_entry(fuse_req_t req, const struct fuse_entry_param *e, { if (!err) { struct fuse *f = req_fuse(req); - if (fuse_reply_entry(req, e) == -ENOENT) - forget_node(f, e->ino, 1); + if (fuse_reply_entry(req, e) == -ENOENT) { + /* Skip forget for negative result */ + if (e->ino != 0) + forget_node(f, e->ino, 1); + } } else reply_err(req, err); }