diff options
author | Enji Cooper <ngie@FreeBSD.org> | 2016-05-27 08:48:33 +0000 |
---|---|---|
committer | Enji Cooper <ngie@FreeBSD.org> | 2016-05-27 08:48:33 +0000 |
commit | 1b537781136864275e44572eb5ec75dc5d2d9c2a (patch) | |
tree | 30a239426e69195bd31aeafab613256157dcbf7f | |
parent | 8eeb3e17731e3d0b4bb0f9201532df9bd669d930 (diff) | |
download | src-1b537781136864275e44572eb5ec75dc5d2d9c2a.tar.gz src-1b537781136864275e44572eb5ec75dc5d2d9c2a.zip |
Quell false positives in svc_vc_create and svc_vc_create_conn with cd and xprt
Both cd and xprt will be non-NULL after their respective malloc(9) wrappers are
called (mem_alloc and svc_xprt_alloc, which calls mem_alloc) as mem_alloc
always gets called with M_WAITOK|M_ZERO today. Thus, testing for them being
non-NULL is incorrect -- it misleads Coverity and it misleads the reader.
Remove some unnecessary NULL initializations as a follow up to help solidify
the fact that these pointers will be initialized properly in sys/rpc/.. with
the interfaces the way they are currently.
Differential Revision: https://reviews.freebsd.org/D6572
MFC after: 2 weeks
Reported by: Coverity
CID: 1007338, 1007339, 1007340
Reviewed by: markj, truckman
Sponsored by: EMC / Isilon Storage Division
Notes
Notes:
svn path=/head/; revision=300836
-rw-r--r-- | sys/rpc/svc_vc.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/sys/rpc/svc_vc.c b/sys/rpc/svc_vc.c index 58bdd011060e..731ba28ce9e3 100644 --- a/sys/rpc/svc_vc.c +++ b/sys/rpc/svc_vc.c @@ -143,7 +143,7 @@ SVCXPRT * svc_vc_create(SVCPOOL *pool, struct socket *so, size_t sendsize, size_t recvsize) { - SVCXPRT *xprt = NULL; + SVCXPRT *xprt; struct sockaddr* sa; int error; @@ -189,11 +189,11 @@ svc_vc_create(SVCPOOL *pool, struct socket *so, size_t sendsize, SOCKBUF_UNLOCK(&so->so_rcv); return (xprt); + cleanup_svc_vc_create: - if (xprt) { - sx_destroy(&xprt->xp_lock); - svc_xprt_free(xprt); - } + sx_destroy(&xprt->xp_lock); + svc_xprt_free(xprt); + return (NULL); } @@ -203,8 +203,8 @@ cleanup_svc_vc_create: SVCXPRT * svc_vc_create_conn(SVCPOOL *pool, struct socket *so, struct sockaddr *raddr) { - SVCXPRT *xprt = NULL; - struct cf_conn *cd = NULL; + SVCXPRT *xprt; + struct cf_conn *cd; struct sockaddr* sa = NULL; struct sockopt opt; int one = 1; @@ -279,12 +279,10 @@ svc_vc_create_conn(SVCPOOL *pool, struct socket *so, struct sockaddr *raddr) return (xprt); cleanup_svc_vc_create: - if (xprt) { - sx_destroy(&xprt->xp_lock); - svc_xprt_free(xprt); - } - if (cd) - mem_free(cd, sizeof(*cd)); + sx_destroy(&xprt->xp_lock); + svc_xprt_free(xprt); + mem_free(cd, sizeof(*cd)); + return (NULL); } |