android_kernel_google_msm/net/ipv6
Eric Dumazet 1c50a0ae29 udp: fix behavior of wrong checksums
commit beb39db59d14990e401e235faf66a6b9b31240b0 upstream.

We have two problems in UDP stack related to bogus checksums :

1) We return -EAGAIN to application even if receive queue is not empty.
   This breaks applications using edge trigger epoll()

2) Under UDP flood, we can loop forever without yielding to other
   processes, potentially hanging the host, especially on non SMP.

This patch is an attempt to make things better.

We might in the future add extra support for rt applications
wanting to better control time spent doing a recv() in a hostile
environment. For example we could validate checksums before queuing
packets in socket receive queue.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Zefan Li <lizefan@huawei.com>
2015-09-18 09:20:47 +08:00
..
netfilter netfilter: Can't fail and free after table replacement 2014-05-18 05:25:56 -07:00
addrconf.c ipv6: reallocate addrconf router for ipv6 address when lo device up 2014-08-07 12:00:11 -07:00
addrconf_core.c
addrlabel.c
af_inet6.c
ah6.c
anycast.c
datagram.c ipv6: fix leaking uninitialized port number of offender sockaddr 2013-12-08 07:29:42 -08:00
esp6.c
exthdrs.c
exthdrs_core.c
fib6_rules.c
icmp.c ipv6: some ipv6 statistic counters failed to disable bh 2014-04-26 17:13:18 -07:00
inet6_connection_sock.c
inet6_hashtables.c net: do not call sock_put() on TIMEWAIT sockets 2013-11-04 04:23:40 -08:00
ip6_fib.c ipv6: replacing a rt6_info needs to purge possible propagated rt6_infos too 2015-04-14 17:33:57 +08:00
ip6_flowlabel.c
ip6_input.c ipv6: don't accept node local multicast traffic from the wire 2013-04-05 10:04:41 -07:00
ip6_output.c ip: make IP identifiers less predictable 2014-08-14 08:42:35 +08:00
ip6_tunnel.c net: tunnels - enable module autoloading 2014-06-26 15:10:28 -04:00
ip6mr.c net: avoid reference counter overflows on fib_rules in multicast forwarding 2014-02-06 11:05:48 -08:00
ipcomp6.c
ipv6_sockglue.c
Kconfig
Makefile drivers/net, ipv6: Select IPv6 fragment idents for virtio UFO packets 2015-02-02 17:05:26 +08:00
mcast.c ipv6: some ipv6 statistic counters failed to disable bh 2014-04-26 17:13:18 -07:00
mip6.c
ndisc.c ipv6: Don't depend on per socket memory for neighbour discovery messages 2013-09-14 06:02:10 -07:00
netfilter.c
output_core.c drivers/net, ipv6: Select IPv6 fragment idents for virtio UFO packets 2015-02-02 17:05:26 +08:00
proc.c
protocol.c
raw.c inet: fix addr_len/msg->msg_namelen assignment in recv_error and rxpmtu functions 2013-12-08 07:29:42 -08:00
reassembly.c ipv6: drop packets with multiple fragmentation headers 2013-09-14 06:02:10 -07:00
route.c ipv6: add check for blackhole or prohibited entry in rt6_redire 2015-09-14 09:27:08 +08:00
sit.c net: tunnels - enable module autoloading 2014-06-26 15:10:28 -04:00
syncookies.c
sysctl_net_ipv6.c
tcp_ipv6.c net: ipv6: tcp: fix potential use after free in tcp_v6_do_rcv 2013-09-14 06:02:10 -07:00
tunnel6.c
udp.c udp: fix behavior of wrong checksums 2015-09-18 09:20:47 +08:00
udp_impl.h ipv6: do not clear pinet6 field 2013-05-19 10:54:47 -07:00
udplite.c ipv6: do not clear pinet6 field 2013-05-19 10:54:47 -07:00
xfrm6_input.c
xfrm6_mode_beet.c
xfrm6_mode_ro.c
xfrm6_mode_transport.c
xfrm6_mode_tunnel.c
xfrm6_output.c
xfrm6_policy.c xfrm6: release dev before returning error 2013-05-19 10:54:47 -07:00
xfrm6_state.c
xfrm6_tunnel.c