ipv6: Need to sock_put on csum error
authorTom Herbert <therbert@google.com>
Mon, 5 May 2014 23:43:58 +0000 (16:43 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 6 May 2014 03:17:16 +0000 (23:17 -0400)
Commit 4068579e1e098fa81d48db9ba4432ab664c58561 ("net: Implmement
RFC 6936 (zero RX csums for UDP/IPv6)") introduced zero checksums
being allowed for IPv6, but in the case that a socket disallows a
zero checksum on RX we need to sock_put.

Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/udp.c

index 4fcd9bca950e5ceecff9ce2f0cbed8b1b6eb689a..fc2be63e32d586d2b192314a7609c9e515ee7ddd 100644 (file)
@@ -884,6 +884,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
                int ret;
 
                if (!uh->check && !sk->sk_no_check) {
+                       sock_put(sk);
                        udp6_csum_zero_error(skb);
                        goto csum_error;
                }