netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net 1/3] unix/dgram: peek beyond 0-sized skbs
@ 2013-04-25 13:47 Benjamin Poirier
  2013-04-25 13:47 ` [PATCH net 2/3] unix/dgram: fix peeking with an offset larger than data in queue Benjamin Poirier
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Benjamin Poirier @ 2013-04-25 13:47 UTC (permalink / raw)
  To: David S. Miller, Eric Dumazet, Pavel Emelyanov; +Cc: netdev, linux-kernel

"77c1090 net: fix infinite loop in __skb_recv_datagram()" (v3.8) introduced a
regression:
After that commit, recv can no longer peek beyond a 0-sized skb in the queue.
__skb_recv_datagram() instead stops at the first skb with len == 0 and results
in the system call failing with -EFAULT via skb_copy_datagram_iovec().

Signed-off-by: Benjamin Poirier <bpoirier@suse.de>
---
 net/core/datagram.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/core/datagram.c b/net/core/datagram.c
index 368f9c3..02398ae 100644
--- a/net/core/datagram.c
+++ b/net/core/datagram.c
@@ -187,7 +187,7 @@ struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned int flags,
 		skb_queue_walk(queue, skb) {
 			*peeked = skb->peeked;
 			if (flags & MSG_PEEK) {
-				if (*off >= skb->len && skb->len) {
+				if (*off >= skb->len && (skb->len || *off)) {
 					*off -= skb->len;
 					continue;
 				}
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2013-04-30  4:44 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-25 13:47 [PATCH net 1/3] unix/dgram: peek beyond 0-sized skbs Benjamin Poirier
2013-04-25 13:47 ` [PATCH net 2/3] unix/dgram: fix peeking with an offset larger than data in queue Benjamin Poirier
2013-04-25 18:58   ` Eric Dumazet
2013-04-25 13:47 ` [PATCH net 3/3] unix/stream: " Benjamin Poirier
2013-04-25 18:48 ` [PATCH net 1/3] unix/dgram: peek beyond 0-sized skbs Eric Dumazet
2013-04-26 18:35   ` Benjamin Poirier
2013-04-26 18:35     ` [PATCH net v2 2/3] unix/dgram: fix peeking with an offset larger than data in queue Benjamin Poirier
2013-04-29  7:01       ` Cong Wang
2013-04-29 21:42         ` [PATCH v3 1/3] unix/dgram: peek beyond 0-sized skbs Benjamin Poirier
2013-04-29 21:42           ` [PATCH v3 2/3] unix/dgram: fix peeking with an offset larger than data in queue Benjamin Poirier
2013-04-30  0:49             ` Eric Dumazet
2013-04-30  4:44             ` David Miller
2013-04-29 21:42           ` [PATCH v3 3/3] unix/stream: " Benjamin Poirier
2013-04-30  0:51             ` Eric Dumazet
2013-04-30  4:44             ` David Miller
2013-04-30  0:48           ` [PATCH v3 1/3] unix/dgram: peek beyond 0-sized skbs Eric Dumazet
2013-04-30  4:44           ` David Miller
2013-04-26 18:35     ` [PATCH net v2 3/3] unix/stream: fix peeking with an offset larger than data in queue Benjamin Poirier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).