]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
SUNRPC: Fix general protection fault in trace_rpc_xdr_overflow()
authorChuck Lever <chuck.lever@oracle.com>
Fri, 23 Oct 2020 14:41:07 +0000 (10:41 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Nov 2020 18:20:26 +0000 (19:20 +0100)
[ Upstream commit d321ff589c16d8c2207485a6d7fbdb14e873d46e ]

The TP_fast_assign() section is careful enough not to dereference
xdr->rqst if it's NULL. The TP_STRUCT__entry section is not.

Fixes: 5582863f450c ("SUNRPC: Add XDR overflow trace event")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
include/trace/events/sunrpc.h

index 28df77a948e56d8ac77b76b7c4c0391a75a82905..f16e9fb97e9f4f9869335f80a49aabe4f71ee78e 100644 (file)
@@ -357,10 +357,10 @@ TRACE_EVENT(rpc_xdr_overflow,
                __field(size_t, tail_len)
                __field(unsigned int, page_len)
                __field(unsigned int, len)
-               __string(progname,
-                        xdr->rqst->rq_task->tk_client->cl_program->name)
-               __string(procedure,
-                        xdr->rqst->rq_task->tk_msg.rpc_proc->p_name)
+               __string(progname, xdr->rqst ?
+                        xdr->rqst->rq_task->tk_client->cl_program->name : "unknown")
+               __string(procedure, xdr->rqst ?
+                        xdr->rqst->rq_task->tk_msg.rpc_proc->p_name : "unknown")
        ),
 
        TP_fast_assign(