diff --git a/src/xpdev/link_list.c b/src/xpdev/link_list.c
index 118fdce0fd47f320272d05a22802d2616bc5cc1c..ea2854f0c6da941ed7ee8be414f15be435f627db 100644
--- a/src/xpdev/link_list.c
+++ b/src/xpdev/link_list.c
@@ -150,6 +150,7 @@ long listDettach(link_list_t* list)
 
 	if((refs=--list->refs)==0) {
 		listUnlock(list);
+		// coverity[sleep:SUPPRESS]
 		listFree(list);
 	}
 	else
@@ -502,8 +503,11 @@ bool listNodeIsLocked(const list_node_t* node)
 
 bool listLockNode(list_node_t* node)
 {
+	if (node == NULL)
+		return false;
+
 	listLock(node->list);
-	if(node==NULL || (node->flags&LINK_LIST_LOCKED)) {
+	if(node->flags&LINK_LIST_LOCKED) {
 		listUnlock(node->list);
 		return(false);
 	}
@@ -769,6 +773,7 @@ void* listRemoveTaggedNode(link_list_t* list, list_node_tag_t tag, bool free_dat
 
 	listLock(list);
 
+	// coverity[double_lock:SUPPRESS]
 	if((node=listFindTaggedNode(list, tag)) != NULL)
 		data = list_remove_node(list, node, free_data);
 
@@ -794,10 +799,12 @@ long listRemoveNodes(link_list_t* list, list_node_t* node, long max, bool free_d
 
 	for(count=0; node!=NULL && count<max; node=next_node, count++) {
 		next_node = node->next;
+		// coverity[double_lock:SUPPRESS]
 		if(listRemoveNode(list, node, free_data)==NULL)
 			break;
 	}
 
+	// coverity[double_unlock:SUPPRESS]
 	listUnlock(list);
 
 	return(count);