diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2021-08-05 15:11:24 -0400 |
---|---|---|
committer | Chuck Lever <chuck.lever@oracle.com> | 2021-08-17 11:47:53 -0400 |
commit | 5c11720767f70d34357d00a15ba5a0ad052c40fe (patch) | |
tree | 33886563ba8dc0bdd7aacbb599351e8422209912 /net/sunrpc/svc.c | |
parent | ea49dc79002c416a9003f3204bc14f846a0dbcae (diff) | |
download | linux-stable-5c11720767f70d34357d00a15ba5a0ad052c40fe.tar.gz linux-stable-5c11720767f70d34357d00a15ba5a0ad052c40fe.tar.bz2 linux-stable-5c11720767f70d34357d00a15ba5a0ad052c40fe.zip |
SUNRPC: Fix a NULL pointer deref in trace_svc_stats_latency()
Some paths through svc_process() leave rqst->rq_procinfo set to
NULL, which triggers a crash if tracing happens to be enabled.
Fixes: 89ff87494c6e ("SUNRPC: Display RPC procedure names instead of proc numbers")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'net/sunrpc/svc.c')
-rw-r--r-- | net/sunrpc/svc.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c index d2d412d43827..5aa263326b6a 100644 --- a/net/sunrpc/svc.c +++ b/net/sunrpc/svc.c @@ -1651,6 +1651,21 @@ u32 svc_max_payload(const struct svc_rqst *rqstp) EXPORT_SYMBOL_GPL(svc_max_payload); /** + * svc_proc_name - Return RPC procedure name in string form + * @rqstp: svc_rqst to operate on + * + * Return value: + * Pointer to a NUL-terminated string + */ +const char *svc_proc_name(const struct svc_rqst *rqstp) +{ + if (rqstp && rqstp->rq_procinfo) + return rqstp->rq_procinfo->pc_name; + return "unknown"; +} + + +/** * svc_encode_result_payload - mark a range of bytes as a result payload * @rqstp: svc_rqst to operate on * @offset: payload's byte offset in rqstp->rq_res |