Thread (3 messages) 3 messages, 2 authors, 2021-10-20

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

On Mon, 2021-10-18 at 09:38 -0300, Thiago Rafael Becker wrote:
quoted hunk ↗ jump to hunk
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

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help