From ddfd2d44a6eab79c722f4b5785efdbcccb9c4d35 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Thu, 20 Jun 2013 11:43:02 +0200 Subject: libfuse: fix multiple close of device fd - fuse_kern_unmount closes handle (e.g. 19) - a thread in my process opens a file - the OS assigns newly freed handle (i.e. 19) - fuse_kern_chan_destroy closes the same handle (i.e. 19) - a thread in my process opens another file - the OS assigns newly freed handle (i.e. 19) - * MAYHEM * Reported by Dan Greenfield --- lib/fuse_session.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib/fuse_session.c') diff --git a/lib/fuse_session.c b/lib/fuse_session.c index c55f250..6e11068 100644 --- a/lib/fuse_session.c +++ b/lib/fuse_session.c @@ -182,6 +182,13 @@ int fuse_chan_fd(struct fuse_chan *ch) return ch->fd; } +int fuse_chan_clearfd(struct fuse_chan *ch) +{ + int fd = ch->fd; + ch->fd = -1; + return fd; +} + size_t fuse_chan_bufsize(struct fuse_chan *ch) { return ch->bufsize; -- cgit v1.2.3