Bug 981

Summary: vhost: avoid sleeping under mutex
Product: DPDK Reporter: David Marchand (david.marchand)
Component: vhost/virtioAssignee: dev
Status: UNCONFIRMED ---    
Severity: normal    
Priority: Normal    
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: All   

Description David Marchand 2022-03-25 10:03:08 CET
Reported by covscan:

 2. dpdk-21.11/lib/vhost/socket.c:852: lock_acquire: Calling function "pthread_mutex_lock" acquires lock "vhost_user.mutex".
23. dpdk-21.11/lib/vhost/socket.c:955: sleep: Call to "vhost_user_reconnect_init" might sleep while holding lock "vhost_user.mutex".
#   953|   		vsocket->reconnect = !(flags & RTE_VHOST_USER_NO_RECONNECT);
#   954|   		if (vsocket->reconnect && reconn_tid == 0) {
#   955|-> 			if (vhost_user_reconnect_init() != 0)
#   956|   				goto out_mutex;
#   957|   		}

The reason for this warning is that creating a ctrl thread might end up with sleep() calls.

Maybe creating the ctrl thread could be moved early (out of the mutex).


Plus, comparing (pthread_t) reconn_tid against 0 is ugly.
Fixing this bz would be a good time to clean this too.