diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index c51e2831f4988806b5b02da84f17d3106e621151..f75f847e688d4a9ca5b0bde01c3e052c88ca51cb 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -2312,6 +2312,7 @@ static int unix_stream_read_generic(struct unix_stream_read_state *state) bool drop_skb; struct sk_buff *skb, *last; +redo: unix_state_lock(sk); if (sock_flag(sk, SOCK_DEAD)) { err = -ECONNRESET; @@ -2353,7 +2354,7 @@ static int unix_stream_read_generic(struct unix_stream_read_state *state) } mutex_lock(&u->readlock); - continue; + goto redo; unlock: unix_state_unlock(sk); break;