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;