freebsd-skq/sys/kern
Attilio Rao b0b9dee5c9 - Fix a race in sched_switch() of sched_4bsd.
In the case of the thread being on a sleepqueue or a turnstile, the
  sched_lock was acquired (without the aid of the td_lock interface) and
  the td_lock was dropped. This was going to break locking rules on other
  threads willing to access to the thread (via the td_lock interface) and
  modify his flags (allowed as long as the container lock was different
  by the one used in sched_switch).
  In order to prevent this situation, while sched_lock is acquired there
  the td_lock gets blocked. [0]
- Merge the ULE's internal function thread_block_switch() into the global
  thread_lock_block() and make the former semantic as the default for
  thread_lock_block(). This means that thread_lock_block() will not
  disable interrupts when called (and consequently thread_unlock_block()
  will not re-enabled them when called). This should be done manually
  when necessary.
  Note, however, that ULE's thread_unblock_switch() is not reaped
  because it does reflect a difference in semantic due in ULE (the
  td_lock may not be necessarilly still blocked_lock when calling this).
  While asymmetric, it does describe a remarkable difference in semantic
  that is good to keep in mind.

[0] Reported by:	Kohji Okuno
			<okuno dot kohji at jp dot panasonic dot com>
Tested by:		Giovanni Trematerra
			<giovanni dot trematerra at gmail dot com>
MFC:			2 weeks
2010-01-23 15:54:21 +00:00
..
bus_if.m Add a facility for associating optional descriptions with active interrupt 2009-10-15 14:54:35 +00:00
clock_if.m
cpufreq_if.m
device_if.m
genassym.sh
imgact_aout.c
imgact_elf32.c
imgact_elf64.c
imgact_elf.c If ET_DYN binary has non-zero base address for some reason, honour it 2009-10-18 12:57:48 +00:00
imgact_gzip.c
imgact_shell.c
inflate.c
init_main.c Random number generator initialization cleanup: 2009-10-20 16:36:51 +00:00
init_sysent.c Regenerate 2009-10-27 11:01:15 +00:00
kern_acct.c Do not use casts (int *)0 and (struct thread *)0 for the arguments of 2009-06-16 15:13:45 +00:00
kern_alq.c Add another flags argument to vn_open_cred. Use it to specify that some 2009-06-21 13:41:32 +00:00
kern_clock.c Introduce the new kernel thread called "deadlock resolver". 2010-01-09 01:46:38 +00:00
kern_condvar.c Remove unused variables p' and unneeded assignments of rval'. 2009-02-26 13:00:13 +00:00
kern_conf.c Update d_mmap() to accept vm_ooffset_t and vm_memattr_t. 2009-12-29 21:51:28 +00:00
kern_cons.c Allow multiple console devices per driver without insane code duplication. 2009-08-24 10:53:30 +00:00
kern_context.c In r197963, a race with thread being selected for signal delivery 2009-10-27 10:47:58 +00:00
kern_cpu.c Free allocated sbufs before returning ENOMEM. 2010-01-08 22:58:50 +00:00
kern_cpuset.c Another nit that both I and ispell missed. 2009-10-26 18:32:06 +00:00
kern_ctf.c
kern_descrip.c On the return path from F_RDAHEAD and F_READAHEAD fcntls, do not 2009-11-20 22:22:53 +00:00
kern_dtrace.c
kern_environment.c Merge change r198561 from projects/mips to head: 2010-01-10 22:34:18 +00:00
kern_event.c If a filter has already been added, actually return EEXIST when trying 2009-12-31 20:56:28 +00:00
kern_exec.c - Fix several off-by-one errors when using MAXCOMLEN. The p_comm[] and 2009-10-23 15:14:54 +00:00
kern_exit.c Let access overriding to TTYs depend on the cdev_priv, not the vnode. 2009-12-19 18:42:12 +00:00
kern_fail.c Remove extraneous semicolons, no functional changes. 2010-01-07 21:01:37 +00:00
kern_fork.c Reintroduce the r196640, after fixing the problem with my testing. 2009-09-01 11:41:51 +00:00
kern_idle.c Split P_NOLOAD into a per-thread flag (TDF_NOLOAD). 2009-11-03 16:46:52 +00:00
kern_intr.c Split P_NOLOAD into a per-thread flag (TDF_NOLOAD). 2009-11-03 16:46:52 +00:00
kern_jail.c Add ip4.saddrsel/ip4.nosaddrsel (and equivalent for ip6) to control 2010-01-17 12:57:11 +00:00
kern_kthread.c Reintroduce the r196640, after fixing the problem with my testing. 2009-09-01 11:41:51 +00:00
kern_ktr.c
kern_ktrace.c - Fix several off-by-one errors when using MAXCOMLEN. The p_comm[] and 2009-10-23 15:14:54 +00:00
kern_linker.c - Unbreak build with KLD_DEBUG defined 2009-11-17 21:56:12 +00:00
kern_lock.c Fix typos. 2010-01-07 01:24:09 +00:00
kern_lockf.c In lf_iteratelocks_vnode, increment state->ls_threads around iterating 2009-06-25 18:54:56 +00:00
kern_lockstat.c Add the OpenSolaris dtrace lockstat provider. The lockstat provider 2009-05-26 20:28:22 +00:00
kern_malloc.c If we're passed garbage in malloc_init(), panic() rather than expecting 2009-06-05 09:16:52 +00:00
kern_mbuf.c Add support to the virtual memory system for configuring machine- 2009-07-12 23:31:20 +00:00
kern_mib.c Declare the kern.ngroups sysctl to be read-only, but tunable at boot for 2010-01-12 18:20:20 +00:00
kern_module.c
kern_mtxpool.c
kern_mutex.c - Fix a race in sched_switch() of sched_4bsd. 2010-01-23 15:54:21 +00:00
kern_ntptime.c
kern_osd.c Make the rmlock(9) interface a bit more like the rwlock(9) interface: 2009-05-29 10:52:37 +00:00
kern_physio.c
kern_pmc.c
kern_poll.c Rather than fix questionable ifnet list locking in the implementation of 2009-08-15 23:07:43 +00:00
kern_priv.c Move "options MAC" from opt_mac.h to opt_global.h, as it's now in GENERIC 2009-06-05 14:55:22 +00:00
kern_proc.c Remove an unused global. 2009-12-25 20:03:03 +00:00
kern_prot.c Only allocate the space we need before calling kern_getgroups instead 2010-01-15 07:18:46 +00:00
kern_resource.c Implement global and per-uid accounting of the anonymous memory. Add 2009-06-23 20:45:22 +00:00
kern_rmlock.c Remove extra spaces (no functional change). 2009-12-25 21:14:05 +00:00
kern_rwlock.c When releasing a read/shared lock we need to use a write memory barrier 2009-09-30 13:26:31 +00:00
kern_sdt.c
kern_sema.c
kern_shutdown.c Don't bother copying the name of a kproc or kthread out into a temporary 2009-10-23 15:09:51 +00:00
kern_sig.c Staticise sigqueue manipulation functions used only in kern_sig.c. 2010-01-23 11:43:30 +00:00
kern_subr.c Constify prime numbers. 2009-08-23 09:55:06 +00:00
kern_switch.c - Use DPCPU for SCHED_STATS. This is somewhat awkward because the 2009-06-25 01:33:51 +00:00
kern_sx.c In current code, threads performing an interruptible sleep (on both 2009-12-12 21:31:07 +00:00
kern_synch.c Add new msleep(9) flag PBDY that shall be specified together with 2009-07-14 22:52:46 +00:00
kern_syscalls.c
kern_sysctl.c Make it possible to change the vnet sysctl variables on jails 2009-08-13 10:26:34 +00:00
kern_tc.c Remove conditionally compiled time counter statistics; tools like 2009-04-11 22:01:40 +00:00
kern_thr.c Currently, when signal is delivered to the process and there is a thread 2009-10-11 16:49:30 +00:00
kern_thread.c Inform hwpmc(4) of a thread's impending demise prior to invoking sched_throw(). 2009-10-25 04:34:47 +00:00
kern_time.c Remove VOP_LEASE and supporting functions. This hasn't been used since 2009-04-10 10:52:19 +00:00
kern_timeout.c Properly fix callout handling by putting all the per-cpu info in 2009-12-14 12:23:46 +00:00
kern_umtx.c Make a chain be a list of queues, and make threads waiting 2010-01-10 09:31:57 +00:00
kern_uuid.c Rework global locks for interface list and index management, correcting 2009-08-23 20:40:19 +00:00
kern_xxx.c Place hostnames and similar information fully under the prison system. 2009-05-29 21:27:12 +00:00
ksched.c
link_elf_obj.c Add macros VNET_SETNAME and VNET_SYMPREFIX, and expose to userspace if 2009-07-20 07:50:50 +00:00
link_elf.c Build on Jeff Roberson's linker-set based dynamic per-CPU allocator 2009-07-14 22:48:30 +00:00
linker_if.m strict kobj signatures: linker_if fixes 2009-06-11 17:05:45 +00:00
Make.tags.inc
Makefile
makesyscalls.sh Add a new COMPAT7 flag for FreeBSD 7.x compatibility system calls. 2009-06-24 13:36:37 +00:00
md4c.c
md5c.c
p1003_1b.c
posix4_mib.c
sched_4bsd.c - Fix a race in sched_switch() of sched_4bsd. 2010-01-23 15:54:21 +00:00
sched_ule.c - Fix a race in sched_switch() of sched_4bsd. 2010-01-23 15:54:21 +00:00
serdev_if.m MFp4: Add the ipend() method to the serdev I/F to allow umbrella 2006-04-23 22:12:39 +00:00
stack_protector.c Random number generator initialization cleanup: 2009-10-20 16:36:51 +00:00
subr_acl_nfs4.c Fix comments. 2010-01-04 12:39:42 +00:00
subr_acl_posix1e.c Now that all the callers seem to be fixed, add KASSERTs to make sure VAPPEND 2009-12-26 11:36:10 +00:00
subr_autoconf.c Prefer ANSI function definitions to K&R ones. 2009-02-03 07:52:07 +00:00
subr_blist.c
subr_bufring.c
subr_bus.c Actually set RLE_ALLOCATED when allocating a reserved resource so that 2009-12-30 22:37:28 +00:00
subr_clock.c
subr_devstat.c Update d_mmap() to accept vm_ooffset_t and vm_memattr_t. 2009-12-29 21:51:28 +00:00
subr_disk.c Clarify and reimplement the bioq API so that bioq_disksort() has 2009-02-13 11:36:32 +00:00
subr_eventhandler.c If the runcount is non-zero in eventhandler_deregister() then one or more 2009-12-17 21:17:13 +00:00
subr_fattime.c
subr_firmware.c Remove extraneous semicolons, no functional changes. 2010-01-07 21:01:37 +00:00
subr_hints.c
subr_kdb.c * Completely Remove the option STOP_NMI from the kernel. This option 2009-08-13 17:09:45 +00:00
subr_kobj.c Use NULL in preference to 0 in pointer contexts. 2009-02-03 07:54:42 +00:00
subr_lock.c - Implement a new mechanism for resetting lock profiling. We now 2009-03-15 06:41:47 +00:00
subr_log.c Make /dev/klog and kern.msgbuf* MPSAFE. 2009-11-03 21:06:19 +00:00
subr_mbpool.c
subr_mchain.c
subr_module.c
subr_msgbuf.c
subr_param.c Replace the static NGROUPS=NGROUPS_MAX+1=1024 with a dynamic 2010-01-12 07:49:34 +00:00
subr_pcpu.c Add ddb show dpcpu_off command to ease dpcpu memory debugging. 2009-08-12 12:06:16 +00:00
subr_power.c
subr_prf.c Make /dev/klog and kern.msgbuf* MPSAFE. 2009-11-03 21:06:19 +00:00
subr_prof.c Use ANSI function definition for profil. 2009-02-03 07:52:36 +00:00
subr_rman.c sysctl_rman: report shared resources to devinfo 2009-05-19 14:08:21 +00:00
subr_rtc.c Clean up MI inittodr(9) and kill noop code. 2009-03-23 21:16:21 +00:00
subr_sbuf.c
subr_scanf.c
subr_sglist.c This patch fixes two bugs in sglist(9) and improves robustness of the API via 2009-08-21 02:59:07 +00:00
subr_sleepqueue.c Introduce the new kernel thread called "deadlock resolver". 2010-01-09 01:46:38 +00:00
subr_smp.c Remove forward_roundrobin(), it is unused for quite some time. 2009-09-21 13:09:56 +00:00
subr_stack.c Add stack_print_short() and stack_print_short_ddb() interfaces to 2009-06-24 12:06:15 +00:00
subr_taskqueue.c - Fix several off-by-one errors when using MAXCOMLEN. The p_comm[] and 2009-10-23 15:14:54 +00:00
subr_trap.c Current pselect(3) is implemented in usermode and thus vulnerable to 2009-10-27 10:55:34 +00:00
subr_turnstile.c Introduce the new kernel thread called "deadlock resolver". 2010-01-09 01:46:38 +00:00
subr_unit.c
subr_witness.c SLIP is gone; remove its mutex from witness. 2009-12-29 08:45:27 +00:00
sys_generic.c Current pselect(3) is implemented in usermode and thus vulnerable to 2009-10-27 10:55:34 +00:00
sys_pipe.c Use C99 initialization for struct filterops. 2009-09-12 20:03:45 +00:00
sys_process.c For PT_TO_SCE stop that stops the ptraced process upon syscall entry, 2010-01-23 11:45:35 +00:00
sys_socket.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
syscalls.c Regenerate 2009-10-27 11:01:15 +00:00
syscalls.master Current pselect(3) is implemented in usermode and thus vulnerable to 2009-10-27 10:55:34 +00:00
systrace_args.c Regenerate 2009-10-27 11:01:15 +00:00
sysv_ipc.c Change the ABI of some of the structures used by the SYSV IPC API: 2009-06-24 21:10:52 +00:00
sysv_msg.c Change the ABI of some of the structures used by the SYSV IPC API: 2009-06-24 21:10:52 +00:00
sysv_sem.c Change the ABI of some of the structures used by the SYSV IPC API: 2009-06-24 21:10:52 +00:00
sysv_shm.c - Rename tunable kern.ipc.shmmaxpgs to kern.ipc.shmall. 2009-10-24 19:00:58 +00:00
tty_compat.c Make TIOCSTI work again. 2010-01-04 20:59:52 +00:00
tty_info.c Print an extra newline when not at the first column already. 2009-05-17 16:17:48 +00:00
tty_inq.c Remove a dead initialization. 2010-01-18 18:58:03 +00:00
tty_outq.c Use unsigned longs for the TTY's sysctl stats. 2009-02-26 10:28:32 +00:00
tty_pts.c Remove the 1000 pseudo terminal limit from pts(4). 2010-01-13 21:22:23 +00:00
tty_tty.c
tty_ttydisc.c Print backspaces after echoing an EOF. 2009-10-17 08:59:41 +00:00
tty.c Make TIOCSTI work again. 2010-01-04 20:59:52 +00:00
uipc_accf.c (S)LIST_HEAD_INITIALIZER takes a (S)LIST_HEAD as an argument. 2009-12-28 22:56:30 +00:00
uipc_cow.c Extend the struct vm_page wire_count to u_int to avoid the overflow 2009-01-03 13:24:08 +00:00
uipc_debug.c Add missing socket options. 2009-05-26 09:19:21 +00:00
uipc_domain.c When registering a protocol to an existing protocol domain via 2009-08-24 10:03:41 +00:00
uipc_mbuf2.c Move "options MAC" from opt_mac.h to opt_global.h, as it's now in GENERIC 2009-06-05 14:55:22 +00:00
uipc_mbuf.c Add m_mbuftouio() helper function to copy(out) an arbitrary 2009-06-22 22:20:38 +00:00
uipc_mqueue.c Use C99 initialization for struct filterops. 2009-09-12 20:03:45 +00:00
uipc_sem.c Use umtx to implement process sharable semaphore, to make this work, 2010-01-05 02:37:59 +00:00
uipc_shm.c Implement global and per-uid accounting of the anonymous memory. Add 2009-06-23 20:45:22 +00:00
uipc_sockbuf.c In sbappendstream_locked() demote all incoming packet mbufs (and 2009-06-22 21:46:40 +00:00
uipc_socket.c Don't comment on stream socket handling in sosend_dgram, since that's 2009-10-02 21:31:15 +00:00
uipc_syscalls.c Fix argument order in a call to mtx_init. 2009-12-17 00:22:56 +00:00
uipc_usrreq.c Fix build on amd64, where sysctl arg1 is a pointer. 2009-10-05 22:23:12 +00:00
vfs_acl.c Add change that was somehow missed in r192586. It could manifest by 2009-12-03 13:29:24 +00:00
vfs_aio.c Use C99 initialization for struct filterops. 2009-09-12 20:03:45 +00:00
vfs_bio.c When buffer write is failed, it is wrong for brelse() to invalidate 2009-07-19 20:25:59 +00:00
vfs_cache.c Correctly handle unlock for !MAKEENTRY case, after successfull attempt of 2009-08-14 10:57:28 +00:00
vfs_cluster.c Remove a stale comment. The very same revision (r85511) that introduced 2009-06-30 19:39:17 +00:00
vfs_default.c Revert r198873. Having different VAPPEND semantics for VOP_ACCESS(9) 2009-11-11 13:49:22 +00:00
vfs_export.c Set the prison in NFS anon and GSS SVC creds. 2009-09-28 18:07:16 +00:00
vfs_extattr.c Replace AUDIT_ARG() with variable argument macros with a set more more 2009-06-27 13:58:44 +00:00
vfs_hash.c
vfs_init.c Expand the scope of the sysctllock sx lock to protect the sysctl tree itself. 2009-02-06 14:51:32 +00:00
vfs_lookup.c When rename("a", "b/.") is performed, target namei() call returns 2009-11-10 11:50:37 +00:00
vfs_mount.c (S)LIST_HEAD_INITIALIZER takes a (S)LIST_HEAD as an argument. 2009-12-28 22:56:30 +00:00
vfs_subr.c Add new function vunref(9) that decrements vnode use count (and hold 2010-01-17 21:24:27 +00:00
vfs_syscalls.c Background: 2010-01-11 20:44:05 +00:00
vfs_vnops.c Don't add VAPPEND if the file is not being opened for writing. Note that this 2009-12-08 20:47:10 +00:00
vnode_if.src Add explicit struct ucred * argument for VOP_VPTOCNP, to be used by 2009-06-21 19:21:01 +00:00