From 0fe9fe5548c2297076882380544de32660b07f4f Mon Sep 17 00:00:00 2001 From: Alex Juncu Date: Thu, 15 Dec 2011 23:01:25 +0000 Subject: [PATCH] --- yaml --- r: 276957 b: refs/heads/master c: 9cef310fcdee12b49b8b4c96fd8f611c8873d284 h: refs/heads/master i: 276955: 52066c3cdd008c73afa3034fd8a50ac5c0c2ec6f v: v3 --- [refs] | 2 +- trunk/net/llc/af_llc.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index cc956644e570..40acd632076f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a03ffcf873fe0f2565386ca8ef832144c42e67fa +refs/heads/master: 9cef310fcdee12b49b8b4c96fd8f611c8873d284 diff --git a/trunk/net/llc/af_llc.c b/trunk/net/llc/af_llc.c index dfd3a648a551..a18e6c3d36e3 100644 --- a/trunk/net/llc/af_llc.c +++ b/trunk/net/llc/af_llc.c @@ -833,15 +833,15 @@ static int llc_ui_recvmsg(struct kiocb *iocb, struct socket *sock, copied += used; len -= used; + /* For non stream protcols we get one packet per recvmsg call */ + if (sk->sk_type != SOCK_STREAM) + goto copy_uaddr; + if (!(flags & MSG_PEEK)) { sk_eat_skb(sk, skb, 0); *seq = 0; } - /* For non stream protcols we get one packet per recvmsg call */ - if (sk->sk_type != SOCK_STREAM) - goto copy_uaddr; - /* Partial read */ if (used + offset < skb->len) continue; @@ -857,6 +857,12 @@ static int llc_ui_recvmsg(struct kiocb *iocb, struct socket *sock, } if (llc_sk(sk)->cmsg_flags) llc_cmsg_rcv(msg, skb); + + if (!(flags & MSG_PEEK)) { + sk_eat_skb(sk, skb, 0); + *seq = 0; + } + goto out; }