NetBSD/sys/kern
mrg 9ba87b8cc3 completely rework the way that orphaned sockets that are being fdpassed
via SCM_RIGHTS messages are dealt with:

1. unp_gc: make this a kthread.

2. unp_detach: go not call unp_gc directly. instead, wake up unp_gc kthread.

3. unp_scan: do not close files here. instead, put them on a global list
   for unp_gc to close, along with a per-file "deferred close count". if
   file is already enqueued for close, just increment deferred close count.
   this eliminates the recursive calls.

3. unp_gc: scan files on global deferred close list. close each file N
   times, as specified by deferred close count in file. continue processing
   list until it becomes empty (closing may cause additional files to be
   queued for close).

4. unp_gc: add additional bit to mark files we are scanning. set during
   initial scan of global file list that currently clears FMARK/FDEFER.
   during later scans, never examine / garbage collect descriptors that
   we have not marked during the earlier scan. do not proceed with this
   initial scan until all deferred closes have been processed. be careful
   with locking to ensure no races are introduced between deferred close
   and file scan.

5. unp_gc: use dummy file_t to mark position in list when scanning. allow
   us to drop filelist_lock. in turn allows us to eliminate kmem_alloc()
   and safely close files, etc.

6. prohibit transfer of descriptors within SCM_RIGHTS messages if
   (num_files_in_transit > maxfiles / unp_rights_ratio)

7. fd_allocfile: ensure recycled filse don't get scanned.


this is 97% work done by andrew doran, with a couple of minor bug fixes
and a lot of testing by yours truly.
2009-03-11 06:05:29 +00:00
..
bufq_disksort.c malloc -> kmem_alloc 2009-01-19 14:54:28 +00:00
bufq_fcfs.c malloc -> kmem_alloc 2009-01-19 14:54:28 +00:00
bufq_priocscan.c malloc -> kmem_alloc 2009-01-19 14:54:28 +00:00
bufq_readprio.c malloc -> kmem_alloc 2009-01-19 14:54:28 +00:00
cnmagic.c
core_elf32.c Make the emulations, exec formats, coredump, NFS, and the NFS server 2008-11-19 18:35:57 +00:00
core_elf64.c
core_netbsd.c Make the emulations, exec formats, coredump, NFS, and the NFS server 2008-11-19 18:35:57 +00:00
exec_aout.c Make the emulations, exec formats, coredump, NFS, and the NFS server 2008-11-19 18:35:57 +00:00
exec_ecoff.c make this compile 2008-11-19 21:29:32 +00:00
exec_elf32.c Make the emulations, exec formats, coredump, NFS, and the NFS server 2008-11-19 18:35:57 +00:00
exec_elf64.c Make the emulations, exec formats, coredump, NFS, and the NFS server 2008-11-19 18:35:57 +00:00
exec_elf.c kill MALLOC and FREE macros. 2008-12-17 20:51:31 +00:00
exec_macho.c
exec_script.c Make the emulations, exec formats, coredump, NFS, and the NFS server 2008-11-19 18:35:57 +00:00
exec_subr.c Don't needlessly acquire v_interlock. 2008-06-02 16:16:27 +00:00
genlintstub.awk
init_main.c main: disable kerenel preemption during early on boot. namely, between 2009-03-05 06:37:03 +00:00
init_sysctl.c like KERN_FILE2: *do* update "needed" when there is no count. we want 2009-03-11 05:55:22 +00:00
init_sysent.c Regen to prove I didn't screw up the conversion: purely RCSID changes. 2009-01-13 22:33:11 +00:00
kern_acct.c s/NOFOLLOW/FOLLOW/ in NDINIT so that it matches actual behavior 2009-02-11 00:32:45 +00:00
kern_auth.c Use __arraycount when appropriate 2008-08-15 01:31:02 +00:00
kern_cctr.c remove extra semicolons. 2009-01-03 03:31:23 +00:00
kern_clock.c hardclock() itself doesn't schedule callout softintrs any more, 2008-10-05 21:57:20 +00:00
kern_condvar.c Make condvars really opaque -- hide the wait message member from consumers 2008-12-19 07:57:28 +00:00
kern_core.c merge christos-time_t 2009-01-11 02:45:45 +00:00
kern_cpu.c Clear error value on exit for IOC_CPU_OGETSTATE ioctl command. 2009-01-19 23:04:26 +00:00
kern_descrip.c completely rework the way that orphaned sockets that are being fdpassed 2009-03-11 06:05:29 +00:00
kern_drvctl.c malloc -> kmem_alloc. 2009-01-17 07:02:35 +00:00
kern_event.c merge christos-time_t 2009-01-11 02:45:45 +00:00
kern_exec.c don't enforce maxproc resource limits for root. 2009-03-07 19:23:02 +00:00
kern_exit.c malloc -> kmem_alloc 2009-01-22 14:38:34 +00:00
kern_fileassoc.c - Convert hashinit() to use kmem_alloc(). The hash tables can be large 2008-05-05 17:11:16 +00:00
kern_fork.c malloc -> kmem_alloc. 2009-01-17 07:02:35 +00:00
kern_idle.c Don't call uvm_pageidlezero() if the CPU is marked offline. 2008-06-11 13:42:02 +00:00
kern_ksyms.c Initialize SYMTAB_SPACE ksyms during ksyms_init. Per PR port-evbarm/40311. 2009-01-23 09:22:25 +00:00
kern_kthread.c Fix a tyop in the previous commit 2009-01-30 04:09:35 +00:00
kern_ktrace.c merge christos-time_t 2009-01-11 02:45:45 +00:00
kern_lock.c Remove LKMs and switch to the module framework, pass 1. 2008-11-12 12:35:50 +00:00
kern_lwp.c lwp_create: fix the locking bugs on affinity ingerition path (mea culpa). 2009-03-03 21:55:06 +00:00
kern_malloc_debug.c Pages mapped by debug_malloc are PMAP_KMPAGE so tell the pmap that. 2008-08-07 01:40:21 +00:00
kern_malloc_stdtype.c M_IOV is used all over the place, so stuff it in with malloc_stdtypes 2008-10-14 14:17:49 +00:00
kern_malloc.c Missed realloc in previous. Ride 5.99.6 bump. 2009-01-07 21:06:31 +00:00
kern_module.c Use "defopt MODULAR" in sys/conf/files, and #include "opt_modular.h" 2009-02-13 22:41:00 +00:00
kern_mutex.c mutex_vector_enter: few predictions. 2009-01-25 04:45:14 +00:00
kern_ntptime.c remove !NTP stub. 2009-01-11 21:00:11 +00:00
kern_pax.c Fix broken enable test; fixes random coredumps. 2008-06-04 12:26:20 +00:00
kern_physio.c Assert that bp->b_error == 0 if all data have been transfered in 2008-11-09 12:18:07 +00:00
kern_pmf.c Extract a subroutine pmf_device_resume_descendants() from 2009-02-06 01:19:33 +00:00
kern_proc.c Set l_psid to PS_NONE for lwp0 (consistency change). 2009-01-24 22:42:32 +00:00
kern_prot.c Move uidinfo to its own module in kern_uidinfo.c and include in rump. 2008-10-11 13:40:57 +00:00
kern_ras.c Merge wrstuden-revivesa into HEAD. 2008-10-15 06:51:17 +00:00
kern_rate.c Split rate-checking routines into their own module for easier reuse. 2008-09-25 17:17:10 +00:00
kern_resource.c dosetrlimit: remove the checks which are no longer needed since rlim_t 2009-02-09 11:13:20 +00:00
kern_runq.c If DEBUG is enabled, drop kpreempt_pri to zero. It means that every 2009-03-02 21:17:29 +00:00
kern_rwlock.c rw_vector_exit(): When doing direct hand-off to a writer, only set 2008-07-29 16:13:39 +00:00
kern_sig.c malloc -> kmem_alloc 2009-01-22 14:38:34 +00:00
kern_sleepq.c Merge wrstuden-revivesa into HEAD. 2008-10-15 06:51:17 +00:00
kern_softint.c softint_disestablish: don't pass softint_lock to kpause, it's not held. 2009-01-01 12:26:46 +00:00
kern_ssp.c If sys/param.h is not included, the kernel compile fails on some platforms 2009-02-26 05:50:54 +00:00
kern_stub.c Use "defopt MODULAR" in sys/conf/files, and #include "opt_modular.h" 2009-02-13 22:41:00 +00:00
kern_subr.c merge christos-time_t 2009-01-11 02:45:45 +00:00
kern_synch.c Warn once and no more about backwards monotonic clock. 2009-02-04 21:29:54 +00:00
kern_sysctl.c Librate sysctl_setup_func typedef from the clutches of _MODULE and 2008-12-29 15:35:02 +00:00
kern_tc.c merge christos-time_t 2009-01-11 02:45:45 +00:00
kern_time.c settime1: fix a bug i introduced when i made l_stime use monotonic time. 2009-01-31 15:53:36 +00:00
kern_timeout.c Update CALLOUT_INVOKING correctly, seems to have been lost. 2008-10-10 11:42:58 +00:00
kern_todr.c remove 2038 comment 2009-02-14 20:45:29 +00:00
kern_turnstile.c turnstile_block(): When an LWP puts its turnstile onto a sync object's 2008-08-12 14:13:34 +00:00
kern_uidinfo.c merge christos-time_t 2009-01-11 02:45:45 +00:00
kern_uuid.c Make uuidgen available for the kernel. 2008-11-18 14:01:03 +00:00
kern_verifiedexec.c PR/39559: Juan RP: veriexec(4): too easy to cause a NULL dereference 2008-12-14 23:20:23 +00:00
kern_xxx.c
kgdb_stub.c make kgdb_dev a dev_t 2009-01-11 10:20:53 +00:00
Make.tags.inc
Makefile Use ${TOOL_SED} instead of plain "sed" in "!=" assignments. 2008-10-25 22:35:36 +00:00
makesyscalls.sh Instead of linking rump system call entry points directly to the 2009-02-20 17:56:36 +00:00
sched_4bsd.c - Replace lwp_t::l_sched_info with union: pointer and timeslice. 2008-10-07 09:48:27 +00:00
sched_m2.c Make SCHED_M2 nice with nice(1). Closes PR/38048. 2008-10-18 03:44:04 +00:00
subr_autoconf.c Unbreak ssp kernels. The issue here that when the ssp_init() call was deferred, 2009-02-12 18:24:18 +00:00
subr_blist.c
subr_bufq.c malloc -> kmem_alloc 2009-01-19 14:54:28 +00:00
subr_callback.c
subr_debug.c
subr_devsw.c Add support for loading pseudo-device drivers. Try to autoload modules from 2009-02-02 14:00:27 +00:00
subr_disk_mbr.c Don't claim its an ISO partitioning scheme too early in the label. An MBR 2009-01-28 15:26:28 +00:00
subr_disk.c malloc -> kmem_alloc 2009-01-22 14:38:34 +00:00
subr_evcnt.c
subr_exec_fd.c Move fd_closeexec() and fd_checkstd() from kern_descrip to their 2008-11-18 13:01:41 +00:00
subr_extent.c
subr_hash.c - Convert hashinit() to use kmem_alloc(). The hash tables can be large 2008-05-05 17:11:16 +00:00
subr_iostat.c malloc -> kmem_alloc 2009-01-22 14:38:34 +00:00
subr_kmem.c use %zu for size_t 2009-02-18 13:04:59 +00:00
subr_kobj.c Use "defopt MODULAR" in sys/conf/files, and #include "opt_modular.h" 2009-02-13 22:41:00 +00:00
subr_lockdebug.c buildfix: use PRIxPTR rather %lx. 2008-11-07 19:50:00 +00:00
subr_log.c
subr_once.c Atomic ops are unnecessary here. pointed out by ad 2008-10-09 12:14:06 +00:00
subr_optstr.c
subr_pcq.c - Optimise by avoiding few memory barriers, when atomic operations 2008-11-11 21:45:33 +00:00
subr_percpu.c Start percpu allocation at (ALIGNBYTES + 1) to avoid problem with importing 2008-12-15 11:59:22 +00:00
subr_pool.c Avoid recursive mutex_enter() when the system is low on KVA. 2008-11-11 16:13:03 +00:00
subr_prf.c Make curlwp accesses conditional on wether the data structures 2009-03-10 10:48:09 +00:00
subr_prof.c
subr_specificdata.c
subr_syscall_stats.c
subr_tftproot.c
subr_time.c Use more timespecs internally. From Alexander Shishkin and me. 2008-07-15 16:18:08 +00:00
subr_userconf.c
subr_vmem.c vmem_rehash_all: remove a debug printf slipped in with the previous changes. 2009-02-18 13:33:46 +00:00
subr_workqueue.c Replace intptr_t in few places to uintptr_t. 2008-09-15 10:43:29 +00:00
subr_xcall.c xc_lowpri: don't truncate `where' from uint64_t to u_int. 2009-03-05 13:18:51 +00:00
sys_aio.c PR kern/26878 FFSv2 + softdep = livelock (no free ram) 2009-02-22 20:28:05 +00:00
sys_descrip.c Fix the posix_fadvise return value... finally. 2009-03-04 18:11:24 +00:00
sys_generic.c Change {ff,fd}_exclose and ff_allocated to bool. Change exclose arg to 2008-07-02 16:45:19 +00:00
sys_lwp.c merge christos-time_t 2009-01-11 02:45:45 +00:00
sys_module.c - Be clear about whether module load is explicit or system initiated (auto). 2008-10-22 11:16:29 +00:00
sys_mqueue.c merge christos-time_t 2009-01-11 02:45:45 +00:00
sys_pipe.c The knote objects attached by peer will still be linked in our list 2009-02-15 00:07:54 +00:00
sys_pmc.c
sys_process.c PR kern/36183 problem with ptrace and multithreaded processes 2009-02-04 21:17:39 +00:00
sys_pset.c lwp_create: fix the locking bugs on affinity ingerition path (mea culpa). 2009-03-03 21:55:06 +00:00
sys_sched.c lwp_create: fix the locking bugs on affinity ingerition path (mea culpa). 2009-03-03 21:55:06 +00:00
sys_select.c merge christos-time_t 2009-01-11 02:45:45 +00:00
sys_sig.c merge christos-time_t 2009-01-11 02:45:45 +00:00
sys_socket.c
sys_syscall.c
syscalls.c Regen to prove I didn't screw up the conversion: purely RCSID changes. 2009-01-13 22:33:11 +00:00
syscalls.conf Use rump/include/rump as the rump_syscalls.h directory. 2008-11-17 08:46:42 +00:00
syscalls.master Use "defopt MODULAR" in sys/conf/files, and #include "opt_modular.h" 2009-02-13 22:41:00 +00:00
sysv_ipc.c Provide compatibility for pre-christos-time_t sysv sysctls. 2009-01-19 19:39:41 +00:00
sysv_msg.c Do not call put_type() but use copyout() when returning the message 2009-01-28 00:59:03 +00:00
sysv_sem.c merge christos-time_t 2009-01-11 02:45:45 +00:00
sysv_shm.c Remove SHMMAXPGS from all kernel configs. Dynamically compute the 2009-03-06 20:31:46 +00:00
tty_bsdpty.c malloc -> kmem_alloc 2009-01-22 14:38:34 +00:00
tty_conf.c
tty_ptm.c malloc -> kmem_alloc 2009-01-22 14:38:34 +00:00
tty_pty.c KNF. ANSI'fy. 2009-03-09 16:19:22 +00:00
tty_subr.c KNF. ANSI'fy. 2009-03-09 16:19:22 +00:00
tty_tty.c
tty.c Avoid deadlock in tty code if a terminal emulation responds to 2009-01-22 20:40:20 +00:00
uipc_accf.c Autoload accept filter modules. 2008-11-20 10:00:54 +00:00
uipc_domain.c like KERN_FILE2: *do* update "needed" when there is no count. we want 2009-03-11 05:55:22 +00:00
uipc_mbuf2.c
uipc_mbuf.c replace bitmask_snprintf(9) with snprintb(3) 2008-12-16 22:35:21 +00:00
uipc_proto.c
uipc_sem.c Replace semid_t with intptr_t. No function change. This is a libc/kernel 2008-11-14 15:49:20 +00:00
uipc_socket2.c restore the pre socket locking patch signal behaviour. 2009-01-21 06:59:29 +00:00
uipc_socket.c solock() in compat code error branch to avoid panic 2009-01-23 15:40:19 +00:00
uipc_syscalls.c restore the pre socket locking patch signal behaviour. 2009-01-21 06:59:29 +00:00
uipc_usrreq.c completely rework the way that orphaned sockets that are being fdpassed 2009-03-11 06:05:29 +00:00
vfs_bio.c like KERN_FILE2: *do* update "needed" when there is no count. we want 2009-03-11 05:55:22 +00:00
vfs_cache.c cache_lookup_entry: add an assertion. 2009-02-18 13:36:11 +00:00
vfs_cwd.c cwd is logically a vfs concept, so take it out from the bosom of 2008-11-18 11:36:58 +00:00
vfs_dirhash.c Previous code ususally works since compiler won't put gap between 2009-02-06 23:56:26 +00:00
vfs_getcwd.c malloc -> kmem_alloc. 2009-01-17 07:02:35 +00:00
vfs_hooks.c Make the emulations, exec formats, coredump, NFS, and the NFS server 2008-11-19 18:35:57 +00:00
vfs_init.c malloc -> kmem_alloc. 2009-01-17 07:02:35 +00:00
vfs_lockf.c Move uidinfo to its own module in kern_uidinfo.c and include in rump. 2008-10-11 13:40:57 +00:00
vfs_lookup.c Make module (auto)loading under chroot envrionment actually work: 2009-02-11 00:19:11 +00:00
vfs_subr.c PR kern/26878 FFSv2 + softdep = livelock (no free ram) 2009-02-22 20:28:05 +00:00
vfs_syscalls.c Fix some comments. 2009-02-23 20:33:30 +00:00
vfs_trans.c more <sys/buf.h> police 2008-11-16 19:34:29 +00:00
vfs_vnops.c Make module (auto)loading under chroot envrionment actually work: 2009-02-11 00:19:11 +00:00
vfs_wapbl.c PR kern/39564 wapbl performance issues with disk cache flushing 2009-02-22 20:10:25 +00:00
vfs_xattr.c getvnode -> fd_getvnode 2008-06-23 11:30:41 +00:00
vnode_if.c reregen to get those most important rcsids right 2008-11-17 08:59:33 +00:00
vnode_if.sh Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer 2008-11-19 14:10:48 +00:00
vnode_if.src vpp is not logically passed in IN with lookup, so INOUT -> OUT. 2008-11-15 19:08:12 +00:00