On Tue, 2012-10-16 at 12:30 -0400, Weston Andros Adamson wrote: > Replace BUG_ON() with WARN_ON_ONCE() and clean up by calling rpc_exit(). > > Signed-off-by: Weston Andros Adamson <dros@xxxxxxxxxx> > --- > net/sunrpc/sched.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c > index 6357fcb..ec9513d 100644 > --- a/net/sunrpc/sched.c > +++ b/net/sunrpc/sched.c > @@ -343,7 +343,11 @@ void rpc_sleep_on(struct rpc_wait_queue *q, struct rpc_task *task, > rpc_action action) > { > /* We shouldn't ever put an inactive task to sleep */ > - BUG_ON(!RPC_IS_ACTIVATED(task)); > + WARN_ON_ONCE(!RPC_IS_ACTIVATED(task)); > + if (!RPC_IS_ACTIVATED(task)) { > + rpc_exit(task, -EINVAL); We should not call rpc_exit(), since the RPC call hasn't even been started at this time. We should rather set task->tk_status to -EIO, and then call rpc_put_task_async(). > + return; > + } > > /* > * Protect the queue operations. > @@ -358,7 +362,11 @@ void rpc_sleep_on_priority(struct rpc_wait_queue *q, struct rpc_task *task, > rpc_action action, int priority) > { > /* We shouldn't ever put an inactive task to sleep */ > - BUG_ON(!RPC_IS_ACTIVATED(task)); > + WARN_ON_ONCE(!RPC_IS_ACTIVATED(task)); > + if (!RPC_IS_ACTIVATED(task)) { > + rpc_exit(task, -EINVAL); > + return; > + } > > /* > * Protect the queue operations. -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥