From fab6944206bf44e2260f20a9d5f1e785f933e705 Mon Sep 17 00:00:00 2001 From: Amar Tumballi Date: Sat, 18 Aug 2018 11:39:03 +0530 Subject: coverity: libglusterfs issues CID: 1391415, 1274122, 1274201, 1382408, 1382437, 1389436 1288798, 1288106, 1288110 updates: bz#789278 Change-Id: I48c7a50f22f5f4580310040c66463d9f7dd26204 Signed-off-by: Amar Tumballi --- libglusterfs/src/client_t.c | 3 ++- libglusterfs/src/event-epoll.c | 15 +++++++++++---- libglusterfs/src/event.c | 8 ++++++++ libglusterfs/src/graph.c | 2 +- libglusterfs/src/logging.c | 4 ++-- libglusterfs/src/mem-pool.c | 3 ++- libglusterfs/src/stack.c | 2 +- libglusterfs/src/syncop.c | 2 ++ libglusterfs/src/syscall.c | 4 ++++ 9 files changed, 33 insertions(+), 10 deletions(-) diff --git a/libglusterfs/src/client_t.c b/libglusterfs/src/client_t.c index aeade5b3a20..046f72e021d 100644 --- a/libglusterfs/src/client_t.c +++ b/libglusterfs/src/client_t.c @@ -744,7 +744,8 @@ gf_client_dump_fdtables_to_dict (xlator_t *this, dict_t *dict) clienttable->cliententries[count].next_free) continue; client = clienttable->cliententries[count].client; - if (!strcmp (client->bound_xl->name, this->name)) { + if (client->bound_xl && + !strcmp (client->bound_xl->name, this->name)) { snprintf (key, sizeof (key), "conn%d", count++); fdtable_dump_to_dict (client->server_ctx. fdtable, diff --git a/libglusterfs/src/event-epoll.c b/libglusterfs/src/event-epoll.c index ed58899caa8..8ff66a8445f 100644 --- a/libglusterfs/src/event-epoll.c +++ b/libglusterfs/src/event-epoll.c @@ -212,18 +212,18 @@ event_slot_unref (struct event_pool *event_pool, struct event_slot_epoll *slot, int do_close = 0; ref = GF_ATOMIC_DEC (slot->ref); + if (ref) + /* slot still alive */ + goto done; LOCK (&slot->lock); { fd = slot->fd; do_close = slot->do_close; + slot->do_close = 0; } UNLOCK (&slot->lock); - if (ref) - /* slot still alive */ - goto done; - event_slot_dealloc (event_pool, idx); if (do_close) @@ -580,6 +580,8 @@ event_dispatch_epoll_handler (struct event_pool *event_pool, pre_unlock: UNLOCK (&slot->lock); + ret = 0; + if (!handler) goto out; @@ -661,6 +663,11 @@ event_dispatch_epoll_worker (void *data) continue; ret = event_dispatch_epoll_handler (event_pool, &event); + if (ret) { + gf_msg ("epoll", GF_LOG_ERROR, 0, + LG_MSG_EXITED_EPOLL_THREAD, + "Failed to dispatch handler"); + } } out: if (ev_data) diff --git a/libglusterfs/src/event.c b/libglusterfs/src/event.c index 61006c100fa..2598cd305a8 100644 --- a/libglusterfs/src/event.c +++ b/libglusterfs/src/event.c @@ -277,6 +277,14 @@ event_dispatch_destroy (struct event_pool *event_pool) ret = pthread_cond_timedwait (&event_pool->cond, &event_pool->mutex, &sleep_till); + if (ret) { + gf_msg_debug ("event", 0, + "thread cond-timedwait failed " + "active-thread-count: %d, " + "retry: %d", + event_pool->activethreadcount, + retry); + } } } pthread_mutex_unlock (&event_pool->mutex); diff --git a/libglusterfs/src/graph.c b/libglusterfs/src/graph.c index e54f62bf518..2a171f3b8dc 100644 --- a/libglusterfs/src/graph.c +++ b/libglusterfs/src/graph.c @@ -93,7 +93,7 @@ glusterfs_read_secure_access_file (void) start = result[0].rm_so; end = result[0].rm_eo; copy_len = end - start; - strcpy (keyval, line+copy_len); + gf_strncpy (keyval, line+copy_len, sizeof (keyval)); if (keyval[0]) { cert_depth = atoi(keyval); if (cert_depth == 0) diff --git a/libglusterfs/src/logging.c b/libglusterfs/src/logging.c index 732c4b26473..a46cb234b72 100644 --- a/libglusterfs/src/logging.c +++ b/libglusterfs/src/logging.c @@ -2504,7 +2504,7 @@ out: return ret; } -int +static int _do_slog_format (const char *event, va_list inp, char **msg) { va_list valist_tmp; int i = 0; @@ -2585,7 +2585,7 @@ _do_slog_format (const char *event, va_list inp, char **msg) { } *msg = gf_strdup (tmp2); - if (!msg) + if (!*msg) ret = -1; out: diff --git a/libglusterfs/src/mem-pool.c b/libglusterfs/src/mem-pool.c index 252bae5d7e3..4b140296b4f 100644 --- a/libglusterfs/src/mem-pool.c +++ b/libglusterfs/src/mem-pool.c @@ -825,9 +825,9 @@ mem_get (struct mem_pool *mem_pool) (void) pthread_spin_lock (&pool_list->lock); pt_pool = &pool_list->pools[mem_pool->pool->power_of_two-POOL_SMALLEST]; retval = mem_get_from_pool (pt_pool); - (void) pthread_spin_unlock (&pool_list->lock); if (!retval) { + (void) pthread_spin_unlock (&pool_list->lock); return NULL; } @@ -835,6 +835,7 @@ mem_get (struct mem_pool *mem_pool) retval->pool = mem_pool; retval->pool_list = pool_list; retval->power_of_two = mem_pool->pool->power_of_two; + (void) pthread_spin_unlock (&pool_list->lock); GF_ATOMIC_INC (mem_pool->active); diff --git a/libglusterfs/src/stack.c b/libglusterfs/src/stack.c index c4cfebc484a..13107e4e3bc 100644 --- a/libglusterfs/src/stack.c +++ b/libglusterfs/src/stack.c @@ -212,7 +212,7 @@ gf_proc_dump_pending_frames (call_pool_t *call_pool) call_stack_t *trav = NULL; int i = 1; int ret = -1; - gf_boolean_t section_added = _gf_true; + gf_boolean_t section_added = _gf_false; if (!call_pool) return; diff --git a/libglusterfs/src/syncop.c b/libglusterfs/src/syncop.c index 767d2ef6853..8323dd71a10 100644 --- a/libglusterfs/src/syncop.c +++ b/libglusterfs/src/syncop.c @@ -467,6 +467,8 @@ synctask_create (struct syncenv *env, size_t stacksize, synctask_fn_t fn, newtask->frame = frame; if (!frame) { newtask->opframe = create_frame (this, this->ctx->pool); + if (!newtask->opframe) + goto err; set_lk_owner_from_ptr (&newtask->opframe->root->lk_owner, newtask->opframe->root); } else { diff --git a/libglusterfs/src/syscall.c b/libglusterfs/src/syscall.c index 2d79d695b09..6a17d1ec6ca 100644 --- a/libglusterfs/src/syscall.c +++ b/libglusterfs/src/syscall.c @@ -493,6 +493,8 @@ gf_add_prefix(const char *ns, const char *key, char **newkey) int ns_length = strlen(ns); *newkey = GF_MALLOC(ns_length + strlen(key) + 10, gf_common_mt_char); + if (!*newkey) + return; strcpy(*newkey, ns); strcat(*newkey, key); } else { @@ -507,6 +509,8 @@ gf_remove_prefix(const char *ns, const char *key, char **newkey) if (strncmp(key, ns, ns_length) == 0) { *newkey = GF_MALLOC(-ns_length + strlen(key) + 10, gf_common_mt_char); + if (!*newkey) + return; strcpy(*newkey, key + ns_length); } else { *newkey = gf_strdup(key); -- cgit