]> Git Repo - linux.git/blobdiff - net/unix/af_unix.c
init/modpost: conditionally check section mismatch to __meminit*
[linux.git] / net / unix / af_unix.c
index 80846279de9f3b94be5c60eda8be17f2adeeaf6b..5e695a9a609c26a0fb75dfbcef768014df382ace 100644 (file)
@@ -2625,18 +2625,18 @@ static struct sk_buff *manage_oob(struct sk_buff *skb, struct sock *sk,
                if (skb == u->oob_skb) {
                        if (copied) {
                                skb = NULL;
-                       } else if (sock_flag(sk, SOCK_URGINLINE)) {
-                               if (!(flags & MSG_PEEK)) {
+                       } else if (!(flags & MSG_PEEK)) {
+                               if (sock_flag(sk, SOCK_URGINLINE)) {
                                        WRITE_ONCE(u->oob_skb, NULL);
                                        consume_skb(skb);
+                               } else {
+                                       __skb_unlink(skb, &sk->sk_receive_queue);
+                                       WRITE_ONCE(u->oob_skb, NULL);
+                                       unlinked_skb = skb;
+                                       skb = skb_peek(&sk->sk_receive_queue);
                                }
-                       } else if (flags & MSG_PEEK) {
-                               skb = NULL;
-                       } else {
-                               __skb_unlink(skb, &sk->sk_receive_queue);
-                               WRITE_ONCE(u->oob_skb, NULL);
-                               unlinked_skb = skb;
-                               skb = skb_peek(&sk->sk_receive_queue);
+                       } else if (!sock_flag(sk, SOCK_URGINLINE)) {
+                               skb = skb_peek_next(skb, &sk->sk_receive_queue);
                        }
                }
 
This page took 0.029361 seconds and 4 git commands to generate.