--- a/net/ipv4/udp.c 2009-12-26 00:06:59.000000000 +0100 +++ b/net/ipv4/udp.c 2009-12-27 00:27:05.003012266 +0100 @@ -711,7 +711,14 @@ skb = skb_recv_datagram(sk, flags, noblock, &err); if (!skb) goto out; - + + if (skb->nh.iph->version != 4) { + skb_free_datagram(sk, skb); + if (noblock) + return -EAGAIN; + goto try_again; + } + copied = skb->len - sizeof(struct udphdr); if (copied > len) { copied = len;