From 0af88a6c33e8fd57745997afb7c68e4ef6023fbf Mon Sep 17 00:00:00 2001 From: Atin Mukherjee Date: Mon, 9 Sep 2019 10:01:04 +0530 Subject: glusterd, rpc, glusterfsd: fix coverity defects and put required annotations 1404965 - Null pointer dereference 1404316 - Program hangs 1401715 - Program hangs 1401713 - Program hangs Updates: bz#789278 Change-Id: I6e6575daafcb067bc910445f82a9d564f43b75a2 Signed-off-by: Atin Mukherjee --- glusterfsd/src/glusterfsd-mgmt.c | 1 + rpc/rpc-transport/socket/src/socket.c | 1 + xlators/mgmt/glusterd/src/glusterd-handler.c | 2 +- xlators/mgmt/glusterd/src/glusterd-shd-svc.c | 2 ++ xlators/mgmt/glusterd/src/glusterd-volume-ops.c | 1 + xlators/protocol/client/src/client.c | 8 ++++++-- 6 files changed, 12 insertions(+), 3 deletions(-) diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index 1d097fb17f5..7eb8b4ba4ae 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -1181,6 +1181,7 @@ glusterfs_handle_svc_detach(rpcsvc_request_t *req) ret = 0; goto out; } + /* coverity[ORDER_REVERSAL] */ ret = glusterfs_process_svc_detach(ctx, volfile_tmp); if (ret) { UNLOCK(&ctx->volfile_lock); diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c index 2fbcbf4a882..26903df44d6 100644 --- a/rpc/rpc-transport/socket/src/socket.c +++ b/rpc/rpc-transport/socket/src/socket.c @@ -3801,6 +3801,7 @@ socket_listen(rpc_transport_t *this) } } + /* coverity[SLEEP] */ ret = __socket_server_bind(this); if ((ret == -EADDRINUSE) || (ret == -1)) { diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 58bb075aa57..0493612d1da 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -3293,7 +3293,7 @@ glusterd_friend_remove(uuid_t uuid, char *hostname) ret = glusterd_peerinfo_cleanup(peerinfo); out: gf_msg_debug(THIS->name, 0, "returning %d", ret); - + /* coverity[LOCK] */ return ret; } diff --git a/xlators/mgmt/glusterd/src/glusterd-shd-svc.c b/xlators/mgmt/glusterd/src/glusterd-shd-svc.c index eaed873d430..e106398e697 100644 --- a/xlators/mgmt/glusterd/src/glusterd-shd-svc.c +++ b/xlators/mgmt/glusterd/src/glusterd-shd-svc.c @@ -482,6 +482,7 @@ glusterd_shdsvc_start(glusterd_svc_t *svc, int flags) volinfo->volname, glusterd_proc_get_pid(&svc->proc)); glusterd_shd_svcproc_cleanup(&volinfo->shd); glusterd_volinfo_unref(volinfo); + goto out1; } goto out; } @@ -494,6 +495,7 @@ out: glusterd_shd_svcproc_cleanup(&volinfo->shd); if (volinfo) glusterd_volinfo_unref(volinfo); +out1: gf_msg_debug(THIS->name, 0, "Returning %d", ret); return ret; diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c index d3a3e65b647..24743b62ade 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c @@ -2492,6 +2492,7 @@ glusterd_start_volume(glusterd_volinfo_t *volinfo, int flags, gf_boolean_t wait) attach_brick_callback can also call store_volinfo for same volume to update volinfo on disk */ + /* coverity[ORDER_REVERSAL] */ LOCK(&volinfo->lock); ret = glusterd_store_volinfo(volinfo, verincrement); UNLOCK(&volinfo->lock); diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c index 45e7bfedf91..5ef866fe03f 100644 --- a/xlators/protocol/client/src/client.c +++ b/xlators/protocol/client/src/client.c @@ -64,10 +64,14 @@ int client_is_last_child_down(xlator_t *this, int32_t event, struct rpc_clnt *rpc) { rpc_clnt_connection_t *conn = NULL; + clnt_conf_t *conf = NULL; int ret = 0; - clnt_conf_t *conf = this->private; - if (!this || !rpc || !conf) + if (!this || !rpc) + goto out; + + conf = this->private; + if (!conf) goto out; if (!conf->parent_down) -- cgit