diff options
author | Bernd Schubert <bschubert@ddn.com> | 2025-03-30 22:43:09 +0200 |
---|---|---|
committer | Bernd Schubert <bernd@bsbernd.com> | 2025-04-24 16:10:40 +0200 |
commit | c5dbcdce2d1942abb567d03bf9dafb74f06b5769 (patch) | |
tree | 9bf54e908b73c2acae3b326c930a1e243c354dad /lib/fuse.c | |
parent | e025a78d9b296bc78e9e3ac2925d8bc0ec26d702 (diff) | |
download | libfuse-c5dbcdce2d1942abb567d03bf9dafb74f06b5769.tar.gz |
Fix multi-threaded fuse session exit
Issue with previous code was that fuse_session_exit()
didn't wake up the semaphore in fuse_loop_mt.c.
Lock, semaphore and all uses of checking for "exited"
are now moved to struct fuse_session to have it
available for the signal handler.
This also removes internal fuse_session_reset() calls,
as that makes testing hard. From git history I also
don't see why it was added.
Closes: https://github.com/libfuse/libfuse/issues/997
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
Diffstat (limited to 'lib/fuse.c')
-rw-r--r-- | lib/fuse.c | 1 |
1 files changed, 0 insertions, 1 deletions
@@ -4595,7 +4595,6 @@ static int fuse_session_loop_remember(struct fuse *f) } free(fbuf.mem); - fuse_session_reset(se); return res < 0 ? -1 : 0; } |