All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.