]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/blobdiff - net/rxrpc/recvmsg.c
sched/headers: Prepare to move signal wakeup & sigpending methods from <linux/sched...
[mirror_ubuntu-disco-kernel.git] / net / rxrpc / recvmsg.c
index c29362d50a92b7de9771e94d8af375944ee168d0..28274a3c9831a124b5e7b81ceefbabdc1dfdfcff 100644 (file)
@@ -14,6 +14,8 @@
 #include <linux/net.h>
 #include <linux/skbuff.h>
 #include <linux/export.h>
+#include <linux/sched/signal.h>
+
 #include <net/sock.h>
 #include <net/af_rxrpc.h>
 #include "ar-internal.h"
@@ -320,8 +322,10 @@ static int rxrpc_recvmsg_data(struct socket *sock, struct rxrpc_call *call,
 
        /* Barriers against rxrpc_input_data(). */
        hard_ack = call->rx_hard_ack;
-       top = smp_load_acquire(&call->rx_top);
-       for (seq = hard_ack + 1; before_eq(seq, top); seq++) {
+       seq = hard_ack + 1;
+       while (top = smp_load_acquire(&call->rx_top),
+              before_eq(seq, top)
+              ) {
                ix = seq & RXRPC_RXTX_BUFF_MASK;
                skb = call->rxtx_buffer[ix];
                if (!skb) {
@@ -394,6 +398,8 @@ static int rxrpc_recvmsg_data(struct socket *sock, struct rxrpc_call *call,
                        ret = 1;
                        goto out;
                }
+
+               seq++;
        }
 
 out: