diff options
Diffstat (limited to 'net/unix/af_unix.c')
| -rw-r--r-- | net/unix/af_unix.c | 9 | 
1 files changed, 5 insertions, 4 deletions
| diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 45506a95b25f..a357dc5f2404 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -2581,15 +2581,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); | 
