Re: [PATCH] [Request for inclusion] Filesystem in Userspace

Arjan van de Ven
2004-11-16T09:18:45Z

On Tue, 2004-11-16 at 10:08 +0100, Miklos Szeredi wrote:
> Linus,
>
> I did send a pointer to the cleaned up patch, maybe this wasn't
> explicit enough:
>
> http://fuse.sourceforge.net/kernel_patches/fuse-2.1-2.6.10-rc2.patch
+static void request_wait_answer(struct fuse_req *req)
+{
+ spin_unlock(&fuse_lock);
+ wait_event(req->waitq, req->finished);
+ spin_lock(&fuse_lock);
+}

+ spin_lock(&fuse_lock);
+ req->out.h.error = -ENOTCONN;
+ if (fc->file) {
+ req->in.h.unique = get_unique(fc);
+ list_add_tail(&req->list, &fc->pending);
+ wake_up(&fc->waitq);
+ request_wait_answer(req);
+ list_del(&req->list);
+ }
+ spin_unlock(&fuse_lock);

somehow I find dropping the lock and then doing a list_del() without any kind of verification very suspicious.
Either you need the lock or you don't. If you do, the code is wrong. If you don't... don't take the lock :)