diff options
Diffstat (limited to 'net/unix/af_unix.c')
| -rw-r--r-- | net/unix/af_unix.c | 11 | 
1 files changed, 5 insertions, 6 deletions
| diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 45506a95b25f..ac1f2bc18fc9 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -213,8 +213,6 @@ static inline bool unix_secdata_eq(struct scm_cookie *scm, struct sk_buff *skb)  }  #endif /* CONFIG_SECURITY_NETWORK */ -#define unix_peer(sk) (unix_sk(sk)->peer) -  static inline int unix_our_peer(struct sock *sk, struct sock *osk)  {  	return unix_peer(osk) == sk; @@ -2581,15 +2579,16 @@ static int unix_stream_recv_urg(struct unix_stream_read_state *state)  	if (!(state->flags & MSG_PEEK))  		WRITE_ONCE(u->oob_skb, NULL); - +	else +		skb_get(oob_skb);  	unix_state_unlock(sk);  	chunk = state->recv_actor(oob_skb, 0, chunk, state); -	if (!(state->flags & MSG_PEEK)) { +	if (!(state->flags & MSG_PEEK))  		UNIXCB(oob_skb).consumed += 1; -		kfree_skb(oob_skb); -	} + +	consume_skb(oob_skb);  	mutex_unlock(&u->iolock); | 
