freebsd-skq/sys
Gleb Smirnoff 1ed7bf1e3b o Fix a race between three threads: output path,
incoming ARP packet and route request adding/removing
  ARP entries. The root of the problem is that
  struct llinfo_arp was accessed without any locks.
  To close race we will use locking provided by
  rtentry, that references this llinfo_arp:
  - Make arplookup() return a locked rtentry.
  - In arpresolve() hold the lock provided by
    rt_check()/arplookup() until the end of function,
    covering all accesses to the rtentry itself and
    llinfo_arp it refers to.
  - In in_arpinput() do not drop lock provided by
    arplookup() during first part of the function.
  - Simplify logic in the first part of in_arpinput(),
    removing one level of indentation.
  - In the second part of in_arpinput() hold rtentry
    lock while copying address.

o Fix a condition when route entry is destroyed, while
  another thread is contested on its lock:
  - When storing a pointer to rtentry in llinfo_arp list,
    always add a reference to this rtentry, to prevent
    rtentry being destroyed via RTM_DELETE request.
  - Remove this reference when removing entry from
    llinfo_arp list.

o Further cleanup of arptimer():
  - Inline arptfree() into arptimer().
  - Use official queue(3) way to pass LIST.
  - Hold rtentry lock while reading its structure.
  - Do not check that sdl_family is AF_LINK, but
    assert this.

Reviewed by:	sam
Stress test:	http://www.holm.cc/stress/log/cons141.html
Stress test:	http://people.freebsd.org/~pho/stress/log/cons144.html
2005-08-11 08:25:48 +00:00
..
alpha Add hints for uart(4). These are the same as for sio(4) and make it 2005-08-06 19:24:22 +00:00
amd64 Decouple the unrefing of a page table page from the removal of a pv entry. 2005-08-11 02:22:55 +00:00
arm - Add support for saving stack traces and displaying them via printf(9) 2005-08-03 04:27:40 +00:00
boot Add if_arl_load, if_axe_load, if_aue_load, if_cs_load, if_cue_load, 2005-08-07 09:41:53 +00:00
bsm For consistency with more system include files, add a trailing '_' to 2005-05-29 16:11:34 +00:00
cam Merge the dev_clone and dev_clone_cred event handlers into a single 2005-08-08 19:55:32 +00:00
coda Merge the dev_clone and dev_clone_cred event handlers into a single 2005-08-08 19:55:32 +00:00
compat Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
conf Add strcasecmp() and strncasecmp() to libkern and connect to the build. 2005-08-08 18:31:13 +00:00
contrib Wrap the new world order in __FreeBSD__ to ease future imports. 2005-08-09 11:59:02 +00:00
crypto
ddb Remove the need to forward declare statics by moving them around. 2005-08-10 07:08:14 +00:00
dev Use device_printf() and if_printf() and remove dc_unit from softc. 2005-08-10 20:33:46 +00:00
doc
fs Remove public declarations of variables that were forgotten when they were 2005-08-10 07:10:02 +00:00
gdb
geom Be case-insensitive when dealing with algorithm names. 2005-08-08 19:40:38 +00:00
gnu Repair this: 2005-07-09 18:30:31 +00:00
i4b Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
i386 Decouple the unrefing of a page table page from the removal of a pv entry. 2005-08-11 02:22:55 +00:00
ia64 Improve SMP support: 2005-08-06 20:28:19 +00:00
isa Add pnp and location info for the ISA bus. The pnp info is the 2005-08-01 07:03:10 +00:00
isofs/cd9660
kern Do not drop the vnode interlock if vdropl is called on already doomed vnode. 2005-08-10 11:46:03 +00:00
libkern Ha! This is a very interesting bug. 2005-08-08 19:38:00 +00:00
modules Style cleanup. 2005-08-10 04:01:21 +00:00
net o Make rt_check() function more strict: 2005-08-11 08:14:53 +00:00
net80211 Don't use ic_curmode to decide when to do 11g station accounting, 2005-08-10 17:42:13 +00:00
netatalk Eliminate MAC entry point mac_create_mbuf_from_mbuf(), which is 2005-07-05 23:39:51 +00:00
netatm Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
netgraph Use the ISO standard function variable vs. a GCC'ism. 2005-08-10 06:25:41 +00:00
netinet o Fix a race between three threads: output path, 2005-08-11 08:25:48 +00:00
netinet6 o Make rt_check() function more strict: 2005-08-11 08:14:53 +00:00
netipsec Correct typo in a comment describing vshiftl(). 2005-06-02 23:56:10 +00:00
netipx Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
netkey fix build without option INET6. 2005-07-30 20:10:31 +00:00
netnatm Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
netncp Change API of mb_copy_t in libmchain so that netsmb can handle 2005-07-29 13:22:37 +00:00
netsmb Merge the dev_clone and dev_clone_cred event handlers into a single 2005-08-08 19:55:32 +00:00
nfs Fixes for NFS crashes on architectures that require strict alignment. 2005-07-14 20:08:27 +00:00
nfs4client
nfsclient FIx for a bug in the change that made nfs_timer() MPSAFE. We need to 2005-07-27 15:06:26 +00:00
nfsserver
opencrypto malloc.h relies on param.h for a definition of MAXCPU. I guess that there is 2005-05-30 05:01:44 +00:00
pc98 MFi386: revision 1.1204. 2005-07-21 11:13:12 +00:00
pccard
pci Use device_printf() and if_printf() and remove dc_unit from softc. 2005-08-10 20:33:46 +00:00
posix4
powerpc - Add support for saving stack traces and displaying them via printf(9) 2005-08-03 04:27:40 +00:00
rpc
security Insert a series of place-holder function pointers in mac_policy.h for 2005-08-08 16:09:33 +00:00
sparc64 The system tick _compare_ register of USIII CPUs and up is ASR25, not 2005-08-07 13:21:00 +00:00
sys Remove public declarations of variables that were forgotten when they were 2005-08-10 07:10:02 +00:00
tools Allow EVFILT_VNODE events to work on every filesystem type, not just 2005-06-09 20:20:31 +00:00
ufs Delay freeing disk space for file system blocks until all dirty buffers 2005-07-31 20:24:14 +00:00
vm Don't allow pagedaemon to skip pages while scanning PQ_ACTIVE or PQ_INACTIVE 2005-08-10 00:17:36 +00:00
Makefile