Re: [PATCH] sunrpc: bug on rpc_task_set_client when no client is present.
From: Trond Myklebust <hidden>
Date: 2021-10-20 19:04:41
Also in:
linux-nfs, lkml
From: Trond Myklebust <hidden>
Date: 2021-10-20 19:04:41
Also in:
linux-nfs, lkml
On Mon, 2021-10-18 at 09:38 -0300, Thiago Rafael Becker wrote:
If we pass a NULL client to rpc_task_set_client and no client is attached to the task, then the kernel will crash later. Antecipate the crash by checking if a client is available for the task. Signed-off-by: Thiago Rafael Becker <redacted> --- net/sunrpc/clnt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index f056ff931444..ccbc9a9715da 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c@@ -1076,7 +1076,7 @@ void rpc_task_set_transport(struct rpc_task*task, struct rpc_clnt *clnt) static void rpc_task_set_client(struct rpc_task *task, struct rpc_clnt *clnt) { - + BUG_ON(clnt == NULL && task->tk_client == NULL); if (clnt != NULL) { rpc_task_set_transport(task, clnt); task->tk_client = clnt;
I'm not seeing the point of this BUG_ON(). Why not just change this code to not check for clnt == NULL, and let the thing Oops when it tries to dereference clnt? -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@hammerspace.com