On Fri, 2025-03-28 at 13:53 -0400, Jeff Layton wrote: > 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? It should mean that the close gets sent, but the task won't wait for completion. -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx