diff options
author | Pavel Emelyanov <xemul@parallels.com> | 2012-02-21 02:30:58 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-02-21 14:58:57 -0500 |
commit | 3f518bf745cbd6007d8069100fb9cb09e960c872 (patch) | |
tree | debbe9e9340d46080f1b82e4149a2427545c4aef /net/ipv6/udp.c | |
parent | 4934b0329f7150dcb5f90506860e2db32274c755 (diff) |
datagram: Add offset argument to __skb_recv_datagram
This one is only considered for MSG_PEEK flag and the value pointed by
it specifies where to start peeking bytes from. If the offset happens to
point into the middle of the returned skb, the offset within this skb is
put back to this very argument.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r-- | net/ipv6/udp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 8aebf8f90436..37b0699e95e5 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c | |||
@@ -342,7 +342,7 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk, | |||
342 | struct inet_sock *inet = inet_sk(sk); | 342 | struct inet_sock *inet = inet_sk(sk); |
343 | struct sk_buff *skb; | 343 | struct sk_buff *skb; |
344 | unsigned int ulen, copied; | 344 | unsigned int ulen, copied; |
345 | int peeked; | 345 | int peeked, off = 0; |
346 | int err; | 346 | int err; |
347 | int is_udplite = IS_UDPLITE(sk); | 347 | int is_udplite = IS_UDPLITE(sk); |
348 | int is_udp4; | 348 | int is_udp4; |
@@ -359,7 +359,7 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk, | |||
359 | 359 | ||
360 | try_again: | 360 | try_again: |
361 | skb = __skb_recv_datagram(sk, flags | (noblock ? MSG_DONTWAIT : 0), | 361 | skb = __skb_recv_datagram(sk, flags | (noblock ? MSG_DONTWAIT : 0), |
362 | &peeked, &err); | 362 | &peeked, &off, &err); |
363 | if (!skb) | 363 | if (!skb) |
364 | goto out; | 364 | goto out; |
365 | 365 | ||