We were performing one extra skb_recv_datagram in mptp_recvmsg.
authorAdrian Bondrescu <adi.bondrescu@gmail.com>
Fri, 1 Jun 2012 02:30:31 +0000 (05:30 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Mon, 18 Mar 2013 16:26:51 +0000 (18:26 +0200)
src/kernel/swift.c

index 116c04b..5bc7434 100644 (file)
@@ -397,6 +397,9 @@ static int swift_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr
 out_free:
            skb_free_datagram(sk, skb);
 
 out_free:
            skb_free_datagram(sk, skb);
 
+               if (i == msg->msg_iovlen - 1)
+                       break;
+
                skb = skb_recv_datagram(sk, flags, 1, &err);
                if (likely(err == -EAGAIN)) {
                        log_debug("No more skbs in the queue, returning...\n");
                skb = skb_recv_datagram(sk, flags, 1, &err);
                if (likely(err == -EAGAIN)) {
                        log_debug("No more skbs in the queue, returning...\n");