linux/net/core
Herbert Xu 49636bb128 [NEIGH] Fix timer leak in neigh_changeaddr
neigh_changeaddr attempts to delete neighbour timers without setting
nud_state.  This doesn't work because the timer may have already fired
when we acquire the write lock in neigh_changeaddr.  The result is that
the timer may keep firing for quite a while until the entry reaches
NEIGH_FAILED.

It should be setting the nud_state straight away so that if the timer
has already fired it can simply exit once we relinquish the lock.

In fact, this whole function is simply duplicating the logic in
neigh_ifdown which in turn is already doing the right thing when
it comes to deleting timers and setting nud_state.

So all we have to do is take that code out and put it into a common
function and make both neigh_changeaddr and neigh_ifdown call it.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2005-10-23 17:18:00 +10:00
..
Makefile [NETFILTER]: split net/core/netfilter.c into net/netfilter/*.c 2005-08-29 15:51:11 -07:00
datagram.c [NET]: Use non-recursive algorithm in skb_copy_datagram_iovec() 2005-09-27 15:22:35 -07:00
dev.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
dev_mcast.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dst.c [PATCH] timer initialization cleanup: DEFINE_TIMER 2005-09-09 14:03:48 -07:00
dv.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ethtool.c [PATCH] (7/7) __user annotations (ethtool) 2005-09-05 17:57:23 -04:00
filter.c [NET]: 2.6.13 breaks libpcap (and tcpdump) 2005-09-05 18:44:37 -07:00
flow.c [NET]: use __read_mostly on kmem_cache_t , DEFINE_SNMP_STAT pointers 2005-08-29 16:11:18 -07:00
gen_estimator.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
gen_stats.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iovec.c [PATCH] misc verify_area cleanups 2005-05-01 08:59:08 -07:00
link_watch.c [NET]: Disable queueing when carrier is lost. 2005-05-03 16:18:52 -07:00
neighbour.c [NEIGH] Fix timer leak in neigh_changeaddr 2005-10-23 17:18:00 +10:00
net-sysfs.c [NET]: Allow controlling NAPI device weight with sysfs 2005-06-08 14:55:42 -07:00
netpoll.c [IPV4]: Replace __in_dev_get with __in_dev_get_rcu/rtnl 2005-10-03 14:35:55 -07:00
pktgen.c [IPV4]: Get rid of bogus __in_put_dev in pktgen 2005-10-03 14:36:32 -07:00
request_sock.c [ICSK]: Introduce reqsk_queue_prune from code in tcp_synack_timer 2005-08-29 15:49:29 -07:00
rtnetlink.c [NETLINK]: Add "groups" argument to netlink_kernel_create 2005-08-29 16:01:11 -07:00
scm.c [PATCH] kill gratitious includes of major.h under net/* 2005-04-25 18:32:13 -07:00
skbuff.c [SK_BUFF]: ipvs_property field must be copied 2005-10-22 17:06:01 -02:00
sock.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
stream.c [PATCH] DocBook: changes and extensions to the kernel documentation 2005-05-01 08:59:25 -07:00
sysctl_net_core.c [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
utils.c [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
wireless.c [PATCH] WE-19 for kernel 2.6.13 2005-09-06 22:40:24 -04:00