freebsd-dev/sys
Bosko Milekic d56368d779 Plug a race and a leak in UMA.
1) The race has to do with zone destruction.  From the zone destructor we
   would lock the zone, set the working set size to 0, then unlock the zone,
   drain it, and then free the structure.  Within the window following the
   working-set-size set to 0 and unlocking of the zone and the point where
   in zone_drain we re-acquire the zone lock, the uma timer routine could
   have fired off and changed the working set size to something non-zero,
   thereby potentially preventing us from completely freeing slabs before
   destroying the zone (and thus leaking them).

2) The leak has to do with zone destruction as well.  When destroying a
   zone we would take care to free all the buckets cached in the zone, but
   although we would drain the pcpu cache buckets, we would not free them.
   This resulted in leaking a couple of bucket structures (512 bytes each)
   per cpu on SMP during zone destruction.

While I'm here, also silence GCC warnings by turning uma_slab_alloc()
from inline to real function.  It's too big to be an inline.

Reviewed by: JeffR
2003-07-30 18:55:15 +00:00
..
alpha In get_mcontext(), if we need to clear the return value, clear 2003-07-30 06:38:35 +00:00
amd64 Use PSL_KERNEL as upcall thread's initial rflags, don't use 2003-07-29 12:44:16 +00:00
arm sys/sys/limits.h: 2003-05-19 20:29:07 +00:00
boot Fix the ski loader, broken by the gcc upgrade. Update the linker 2003-07-17 01:49:59 +00:00
cam Fix the new DA_OLD_QUIRKS option for normal and module compiles. 2003-07-29 18:08:16 +00:00
coda Add a "int fd" argument to VOP_OPEN() which in the future will 2003-07-26 07:32:23 +00:00
compat Try to make 'uname -a' look more like it does on Linux: 2003-07-29 10:03:15 +00:00
conf Fix the new DA_OLD_QUIRKS option for normal and module compiles. 2003-07-29 18:08:16 +00:00
contrib Make this compile on 64 bit systems again. You cannot just cast a 32 bit 2003-07-28 10:25:26 +00:00
crypto Use __FBSDID(). 2003-06-10 21:44:29 +00:00
ddb Rename P_THREADED to P_SA. P_SA means a process is using scheduler 2003-06-15 00:31:24 +00:00
dev Add and document the hw.acpi.ec.poll_timeout tunable. 2003-07-30 16:22:53 +00:00
fs Add a "int fd" argument to VOP_OPEN() which in the future will 2003-07-26 07:32:23 +00:00
geom Fix a memory leak in CCD's mirror code. 2003-07-29 20:04:06 +00:00
gnu Add a "int fd" argument to VOP_OPEN() which in the future will 2003-07-26 07:32:23 +00:00
i4b Undo agressive inlining which GCC previously wisely ignored. 2003-07-23 17:58:41 +00:00
i386 Use ACPI_FLUSH_CPU_CACHE() instead of wbinvd(). Verified .o with md5. 2003-07-30 17:20:33 +00:00
ia64 - Introduce a new busdma flag BUS_DMA_ZERO to request for zero'ed 2003-07-27 13:52:10 +00:00
isa Add support for the A4 Tech RFSW-35 mouse wheel. Probe is similar to 2003-07-12 18:36:04 +00:00
isofs/cd9660 Add a "int fd" argument to VOP_OPEN() which in the future will 2003-07-26 07:32:23 +00:00
kern The introduction of vm object locking has caused witness to reveal 2003-07-30 18:55:04 +00:00
libkern Backed out the micro-optimization in 1.4. It was to help gcc-2.6.3 2003-07-25 15:54:23 +00:00
modules Fix the new DA_OLD_QUIRKS option for normal and module compiles. 2003-07-29 18:08:16 +00:00
net Implement a mechanism by which ATM drivers can inform interested 2003-07-29 13:04:52 +00:00
net80211 add monitor mode 2003-07-21 02:49:42 +00:00
netatalk
netatm The number of prefixes can never be negative so use an u_int for this. 2003-07-29 13:46:43 +00:00
netgraph Process events from the ATM drivers. Carrier change and PVC change 2003-07-29 16:27:23 +00:00
netinet o Do not overwrite saved interrupt priority level by alloc_hash(), 2003-07-25 09:59:16 +00:00
netinet6 Cleanup useless break. 2003-07-29 14:10:13 +00:00
netipsec consolidate callback optimization check in one location by adding a flag 2003-06-30 05:09:32 +00:00
netipx Use __FBSDID(). 2003-06-11 05:37:42 +00:00
netkey Use __FBSDID(). 2003-06-11 05:37:42 +00:00
netnatm Instead of returning an error call the ioctl() handler of the interface 2003-07-15 15:51:50 +00:00
netncp size_t != int. Make this compile on 64 bit platforms (eg: amd64). 2003-07-24 01:59:18 +00:00
netsmb Reserve space for the trailing null byte in the srvname member of 2003-07-27 11:36:00 +00:00
nfs
nfsclient Fix a problem that occurs when truncating files on NFSv3 mounts: we need 2003-07-29 00:17:29 +00:00
nfsserver Change idle state sleep identifier to "-" for nfsd. 2003-07-02 08:08:32 +00:00
opencrypto consolidate callback optimization check in one location by adding a flag 2003-06-30 05:09:32 +00:00
pc98 MFi386: revision 1.1090. 2003-07-23 12:09:14 +00:00
pccard OLDCARD is OBSOLETE_IN_6. Tag it as such. 2003-06-12 04:46:43 +00:00
pci Use the BUS_DMA_ZERO flag. 2003-07-27 14:38:54 +00:00
posix4 Use __FBSDID(). 2003-06-11 06:34:30 +00:00
powerpc Make pmap_pvo_allocf() callable without Giant. 2003-07-27 20:57:53 +00:00
rpc
security Remove trailing whitespace. 2003-07-05 01:24:36 +00:00
sparc64 Return 1 from pmap_protect_tte() instead of 0. When used with 2003-07-30 16:27:51 +00:00
sys Add fdidx argument to vn_open() and vn_open_cred() and pass -1 throughout. 2003-07-27 17:04:56 +00:00
tools Don't check the state of the vnode interlock if the specification says 2003-06-22 21:20:06 +00:00
ufs Rename VOP_RMEXTATTR() to VOP_DELETEEXTATTR() for consistency with the 2003-07-28 18:53:29 +00:00
vm Plug a race and a leak in UMA. 2003-07-30 18:55:15 +00:00
Makefile Revert exclusion for amd64 that stopped boot/ being built. 2003-06-26 03:52:48 +00:00