diff options
author | John W. Linville <linville@tuxdriver.com> | 2006-08-14 15:33:54 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2006-08-14 15:33:54 -0400 |
commit | e9ffb3d7ec94083a44a8721681391beca2ffd68c (patch) | |
tree | 6768ab487b3f44c2a4995ee61307e47760ca9b88 /net/llc/af_llc.c | |
parent | 8b9411014e6f18a883c18b38f41338dbd53fddea (diff) | |
parent | e9fa4f7bd291c29a785666e2fa5a9cf3241ee6c3 (diff) |
Merge branch 'from-linus' into upstream
Diffstat (limited to 'net/llc/af_llc.c')
-rw-r--r-- | net/llc/af_llc.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/net/llc/af_llc.c b/net/llc/af_llc.c index d6cfe84d521..2652ead96c6 100644 --- a/net/llc/af_llc.c +++ b/net/llc/af_llc.c @@ -784,24 +784,20 @@ static int llc_ui_recvmsg(struct kiocb *iocb, struct socket *sock, copied += used; len -= used; - if (used + offset < skb->len) - continue; - 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; } while (len > 0); - /* - * According to UNIX98, msg_name/msg_namelen are ignored - * on connected socket. -ANK - * But... af_llc still doesn't have separate sets of methods for - * SOCK_DGRAM and SOCK_STREAM :-( So we have to do this test, will - * eventually fix this tho :-) -acme - */ - if (sk->sk_type == SOCK_DGRAM) - goto copy_uaddr; out: release_sock(sk); return copied; |