diff options
Diffstat (limited to 'net/unix/af_unix.c')
| -rw-r--r-- | net/unix/af_unix.c | 13 | 
1 files changed, 3 insertions, 10 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 45aebd966978..a4631477cedf 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -2256,14 +2256,7 @@ static int unix_stream_read_generic(struct unix_stream_read_state *state)  	/* Lock the socket to prevent queue disordering  	 * while sleeps in memcpy_tomsg  	 */ -	err = mutex_lock_interruptible(&u->readlock); -	if (unlikely(err)) { -		/* recvmsg() in non blocking mode is supposed to return -EAGAIN -		 * sk_rcvtimeo is not honored by mutex_lock_interruptible() -		 */ -		err = noblock ? -EAGAIN : -ERESTARTSYS; -		goto out; -	} +	mutex_lock(&u->readlock);  	if (flags & MSG_PEEK)  		skip = sk_peek_offset(sk, flags); @@ -2307,12 +2300,12 @@ again:  			timeo = unix_stream_data_wait(sk, timeo, last,  						      last_len); -			if (signal_pending(current) || -			    mutex_lock_interruptible(&u->readlock)) { +			if (signal_pending(current)) {  				err = sock_intr_errno(timeo);  				goto out;  			} +			mutex_lock(&u->readlock);  			continue;  unlock:  			unix_state_unlock(sk);  | 
