diff options
| author | Sergey Senozhatsky <senozhatsky@chromium.org> | 2025-06-10 07:52:29 +0300 |
|---|---|---|
| committer | Miklos Szeredi <mszeredi@redhat.com> | 2025-08-27 15:29:43 +0300 |
| commit | 14cbb72d7595f3a962a7b206f75a32b1bd9fa335 (patch) | |
| tree | 370443bfc76ed5ee2b5cd842df34aca0cfc94d30 | |
| parent | dd6a5a71c811289eec234e78cb9ca34d055d2ad5 (diff) | |
| download | linux-14cbb72d7595f3a962a7b206f75a32b1bd9fa335.tar.xz | |
fuse: use freezable wait in fuse_get_req()
Use freezable wait in fuse_get_req() so that it won't block
the system from entering suspend:
Freezing user space processes failed after 20.009 seconds
Call trace:
__switch_to+0xcc/0x168
schedule+0x57c/0x1138
fuse_get_req+0xd0/0x2b0
fuse_simple_request+0x120/0x620
fuse_getxattr+0xe4/0x158
fuse_xattr_get+0x2c/0x48
__vfs_getxattr+0x160/0x1d8
get_vfs_caps_from_disk+0x74/0x1a8
__audit_inode+0x244/0x4d8
user_path_at_empty+0x2e0/0x390
__arm64_sys_faccessat+0xdc/0x260
Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
| -rw-r--r-- | fs/fuse/dev.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index 5150aa25e64b..3d8a3edebc23 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -207,8 +207,9 @@ static struct fuse_req *fuse_get_req(struct mnt_idmap *idmap, if (fuse_block_alloc(fc, for_background)) { err = -EINTR; - if (wait_event_killable_exclusive(fc->blocked_waitq, - !fuse_block_alloc(fc, for_background))) + if (wait_event_state_exclusive(fc->blocked_waitq, + !fuse_block_alloc(fc, for_background), + (TASK_KILLABLE | TASK_FREEZABLE))) goto out; } /* Matches smp_wmb() in fuse_set_initialized() */ |
