On Fri, 2025-03-28 at 13:40 -0400, trondmy@xxxxxxxxxx wrote: > From: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > > Once a task calls exit_signals() it can no longer be signalled. So do > not allow it to do killable waits. > > Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > --- > net/sunrpc/sched.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c > index 9b45fbdc90ca..73bc39281ef5 100644 > --- a/net/sunrpc/sched.c > +++ b/net/sunrpc/sched.c > @@ -276,6 +276,8 @@ EXPORT_SYMBOL_GPL(rpc_destroy_wait_queue); > > static int rpc_wait_bit_killable(struct wait_bit_key *key, int mode) > { > + if (unlikely(current->flags & PF_EXITING)) > + return -EINTR; > schedule(); > if (signal_pending_state(mode, current)) > return -ERESTARTSYS; Won't this mean that if a task is signalled and does a final fput, that a CLOSE sent in task_work will never get sent? -- Jeff Layton <jlayton@xxxxxxxxxx>