]> Pileus Git - ~andy/linux/blobdiff - net/ipv6/udp.c
ipv6: call udp_push_pending_frames when uncorking a socket with AF_INET pending data
[~andy/linux] / net / ipv6 / udp.c
index f77e34c5a0e20f9639659b11814662a3547d25ea..b6f31437a1f80a84d3c3ee89d71044c7b33c6f17 100644 (file)
@@ -959,11 +959,16 @@ static int udp_v6_push_pending_frames(struct sock *sk)
        struct udphdr *uh;
        struct udp_sock  *up = udp_sk(sk);
        struct inet_sock *inet = inet_sk(sk);
-       struct flowi6 *fl6 = &inet->cork.fl.u.ip6;
+       struct flowi6 *fl6;
        int err = 0;
        int is_udplite = IS_UDPLITE(sk);
        __wsum csum = 0;
 
+       if (up->pending == AF_INET)
+               return udp_push_pending_frames(sk);
+
+       fl6 = &inet->cork.fl.u.ip6;
+
        /* Grab the skbuff where UDP header space exists. */
        if ((skb = skb_peek(&sk->sk_write_queue)) == NULL)
                goto out;