diff options
author | Denis V. Lunev <den@openvz.org> | 2008-06-04 15:49:07 +0400 |
---|---|---|
committer | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2008-06-05 04:02:38 +0900 |
commit | 36d926b94a9908937593e5669162305a071b9cc3 (patch) | |
tree | c298f82a8d8b87ab4ebf7b514b394763889108b0 /net/ipv6/udp.c | |
parent | 49d074f4009a7b5ce9c17b040f978abcb4d7f6f6 (diff) | |
download | lwn-36d926b94a9908937593e5669162305a071b9cc3.tar.gz lwn-36d926b94a9908937593e5669162305a071b9cc3.zip |
[IPV6]: inet_sk(sk)->cork.opt leak
IPv6 UDP sockets wth IPv4 mapped address use udp_sendmsg to send the data
actually. In this case ip_flush_pending_frames should be called instead
of ip6_flush_pending_frames.
Signed-off-by: Denis V. Lunev <den@openvz.org>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r-- | net/ipv6/udp.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 1b35c4722004..dd309626ae9a 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -534,7 +534,9 @@ static void udp_v6_flush_pending_frames(struct sock *sk) { struct udp_sock *up = udp_sk(sk); - if (up->pending) { + if (up->pending == AF_INET) + udp_flush_pending_frames(sk); + else if (up->pending) { up->len = 0; up->pending = 0; ip6_flush_pending_frames(sk); |