Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Sergey Senozhatsky and committed by
Miklos Szeredi
14cbb72d dd6a5a71

+3 -2
+3 -2
fs/fuse/dev.c
··· 207 207 208 208 if (fuse_block_alloc(fc, for_background)) { 209 209 err = -EINTR; 210 - if (wait_event_killable_exclusive(fc->blocked_waitq, 211 - !fuse_block_alloc(fc, for_background))) 210 + if (wait_event_state_exclusive(fc->blocked_waitq, 211 + !fuse_block_alloc(fc, for_background), 212 + (TASK_KILLABLE | TASK_FREEZABLE))) 212 213 goto out; 213 214 } 214 215 /* Matches smp_wmb() in fuse_set_initialized() */