android_kernel_google_msm/net
Marcelo Ricardo Leitner b54ca60899 ipv4: avoid parallel route cache gc executions
When rt_intern_hash() has to deal with neighbour cache overflowing,
it triggers the route cache garbage collector in an attempt to free
some references on neighbour entries.

Such call cannot be done async but should also not run in parallel with
an already-running one, so that they don't collapse fighting over the
hash lock entries.

This patch thus blocks parallel executions with spinlocks:
- A call from worker and from rt_intern_hash() are not the same, and
cannot be merged, thus they will wait each other on rt_gc_lock.
- Calls to gc from rt_intern_hash() may happen in parallel but we must
wait for it to finish in order to try again. This dedup and
synchrinozation is then performed by the locking just before calling
__do_rt_garbage_collect().

Signed-off-by: Marcelo Ricardo Leitner <mleitner@redhat.com>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Zefan Li <lizefan@huawei.com>
2014-12-01 18:02:44 +08:00
..
9p virtio: 9p: correctly pass physical address to userspace for high pages 2014-06-11 12:04:17 -07:00
802
8021q 8021q: fix a potential memory leak 2014-07-28 07:06:45 -07:00
appletalk appletalk: Fix socket referencing in skb 2014-07-28 07:06:45 -07:00
atm
ax25
batman-adv
bluetooth Bluetooth: Remove unused hci_le_ltk_reply() 2014-07-09 10:51:20 -07:00
bridge netfilter: Can't fail and free after table replacement 2014-05-18 05:25:56 -07:00
caif
can
ceph libceph: do not hard code max auth ticket len 2014-12-01 18:02:29 +08:00
core iovec: make sure the caller actually wants anything in memcpy_fromiovecend 2014-08-14 08:42:36 +08:00
dcb
dccp
decnet
dns_resolver dns_resolver: Null-terminate the right string 2014-07-28 07:06:46 -07:00
dsa
econet
ethernet
ieee802154
ipv4 ipv4: avoid parallel route cache gc executions 2014-12-01 18:02:44 +08:00
ipv6 ip: make IP identifiers less predictable 2014-08-14 08:42:35 +08:00
ipx
irda
iucv
key
l2tp net/l2tp: don't fall back on UDP [get|set]sockopt 2014-08-07 12:00:11 -07:00
lapb
llc
mac80211 mac80211: don't check netdev state for debugfs read/write 2014-07-09 10:51:20 -07:00
netfilter inetpeer: get rid of ip_id_count 2014-08-14 08:42:35 +08:00
netlabel
netlink
netrom
nfc
openvswitch
packet
phonet
rds rds: prevent dereference of a NULL device in rds_iw_laddr_check 2014-04-26 17:13:18 -07:00
rfkill
rose
rxrpc
sched act_mirred: do not drop packets when fails to mirror it 2014-06-07 16:02:00 -07:00
sctp sctp: fix possible seqlock seadlock in sctp_packet_transmit() 2014-08-14 08:42:36 +08:00
sunrpc nfsd: check passed socket's net matches NFSd superblock's one 2014-06-11 12:04:19 -07:00
tipc tipc: clear 'next'-pointer of message fragments before reassembly 2014-07-28 07:06:45 -07:00
unix net: unix: non blocking recvmsg() should not return -EINTR 2014-04-26 17:13:16 -07:00
wanrouter
wimax
wireless nl80211: clear skb cb before passing to netlink 2014-12-01 18:02:41 +08:00
x25
xfrm
compat.c net: sendmsg: fix NULL pointer dereference 2014-08-14 08:42:35 +08:00
Kconfig
Makefile
nonet.c
socket.c net: socket: error on a negative msg_namelen 2014-04-26 17:13:17 -07:00
sysctl_net.c