freebsd-dev/sys/kern
Robert Watson b5ff091431 Close a race that occurs when using sendto() to connect and send on a
UNIX domain socket at the same time as the remote host is closing the
new connections as quickly as they open.  Since the connect() and
send() paths are non-atomic with respect to another, it is possible
for the second thread's close() call to disconnect the two sockets
as connect() returns, leading to the consumer (which plans to send())
with a NULL kernel pointer to its proposed peer.  As a result, after
acquiring the UNIX domain socket subsystem lock, we need to revalidate
the connection pointers even though connect() has technically succeed,
and reurn an error to say that there's no connection on which to
perform the send.

We might want to rethink the specific errno number, perhaps ECONNRESET
would be better.

PR:		100940
Reported by:	Young Hyun <youngh at caida dot org>
MFC after:	2 weeks
MFC note:	Some adaptation will be required
2006-07-31 23:00:05 +00:00
..
bus_if.m Create bus_enumerate_hinted_children. This routine will allow drivers 2006-07-08 17:06:15 +00:00
clock_if.m
cpufreq_if.m
device_if.m
genassym.sh
imgact_aout.c Correct two vm object reference leaks in error cases. 2006-03-16 08:51:59 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Avoid a vm object reference leak in a rarely used code path. 2006-01-21 20:11:49 +00:00
imgact_gzip.c Maintain the lock on the vnode for most of exec_elfN_imgact(). 2005-12-24 04:57:50 +00:00
imgact_shell.c Fix a panic which could occur parsing #!-lines in a shell-script. If the 2005-06-19 02:21:03 +00:00
inflate.c Normalize a significant number of kernel malloc type names: 2005-10-31 15:41:29 +00:00
init_main.c The VERBOSE_SYSINIT stuff sees the DDB define a lot better if we include 2006-05-14 07:11:28 +00:00
init_sysent.c Regen for MPSAFE flag removal. 2006-07-28 19:08:37 +00:00
kern_acct.c Audit path passed to the acct() system call. 2006-06-05 13:02:34 +00:00
kern_acl.c Move POSIX.1e-specific utility routines from kern_acl.c to 2006-07-06 23:37:39 +00:00
kern_alq.c - Conditionalize Giant around VFS operations for ALQ, ktrace, and 2006-03-28 21:30:22 +00:00
kern_clock.c Unexpand an instance of TAILQ_EMPTY() 2006-06-14 03:14:26 +00:00
kern_condvar.c Fix a sleep queue race for KSE thread. 2006-02-23 00:13:58 +00:00
kern_conf.c Make the printfs relating to purging threads from a device less intrusive. 2006-05-17 06:37:14 +00:00
kern_context.c
kern_cpu.c - Print message about cpufreq and timecounter TSC 2006-03-03 02:06:04 +00:00
kern_descrip.c Add a comment to explain what fdclose() does and what it's purpose is 2006-07-21 20:24:00 +00:00
kern_environment.c Use a sleep mutex instead of an sx lock for the kernel environment. This 2006-07-09 21:42:58 +00:00
kern_event.c Use fget() in kqueue_register() instead of doing all the work by hand. 2006-06-12 21:46:23 +00:00
kern_exec.c In execve(), audit the path name being executed. In the future, it 2006-05-28 08:28:47 +00:00
kern_exit.c Close race between vmspace_exitfree() and exit1() and races between 2006-05-29 21:28:56 +00:00
kern_fork.c - Use suser_cred(9) instead of checking cr_ruid directly. 2006-06-27 11:28:50 +00:00
kern_idle.c Divorce critical sections from spinlocks. Critical sections as denoted by 2005-04-04 21:53:56 +00:00
kern_intr.c Simplify the pager support in DDB. Allowing different db commands to 2006-07-12 21:22:44 +00:00
kern_jail.c Push Giant down in jails. Pass the MPSAFE flag to NDINIT, and keep track 2005-09-28 00:30:56 +00:00
kern_kse.c Close some races between procfs/ptrace and exit(2): 2006-02-22 18:57:50 +00:00
kern_kthread.c Don't do a PHOLD() in kthread_create() w/o a matching PRELE() in 2006-02-22 17:21:45 +00:00
kern_ktr.c Simplify the pager support in DDB. Allowing different db commands to 2006-07-12 21:22:44 +00:00
kern_ktrace.c Trim an obsolete comment. ktrgenio() stopped doing crazy gymnastics when 2006-07-31 15:31:43 +00:00
kern_linker.c Explicitly use STAILQ_REMOVE_HEAD() when we know we are removing the head 2006-07-10 19:28:57 +00:00
kern_lock.c Remove duplicated #include. 2006-07-14 17:55:36 +00:00
kern_lockf.c Print name of device instead of useless major/minor numbers. 2005-03-29 08:13:01 +00:00
kern_mac.c Remove the NDEVFSINO and NDEVFSOVERFLOW options which no longer exists in 2006-07-17 09:07:02 +00:00
kern_malloc.c Remove old kern.malloc sysctl, which generated a text representation of 2006-07-23 19:55:41 +00:00
kern_mbuf.c Move some functions and definitions from uipc_socket2.c to uipc_socket.c: 2006-06-10 14:34:07 +00:00
kern_mib.c mp_ncpus is always (properly) initialized, even on UP kernels, so just use it. 2005-08-21 18:03:31 +00:00
kern_module.c Address a problem I missed in removing Giant from the kernel linker. Not 2006-06-26 18:34:45 +00:00
kern_mtxpool.c
kern_mutex.c Adjust td_locks for non-spin mutexes, rwlocks, and sx locks so that it is 2006-07-27 21:45:55 +00:00
kern_ntptime.c Explicitly acquire Giant around the ntp_gettime() and assert it in the 2005-05-28 14:34:41 +00:00
kern_physio.c
kern_pmc.c Fix -Wundef. 2005-12-04 02:12:43 +00:00
kern_poll.c Change msleep() and tsleep() to not alter the calling thread's priority 2006-04-17 18:20:38 +00:00
kern_proc.c CPU time accounting speedup (step 2) 2006-02-11 09:33:07 +00:00
kern_prot.c Add kern_setgroups() and kern_getgroups() and use them to implement 2006-07-06 21:32:20 +00:00
kern_resource.c Go over calcru and friends once more. 2006-03-11 10:48:19 +00:00
kern_rwlock.c Adjust td_locks for non-spin mutexes, rwlocks, and sx locks so that it is 2006-07-27 21:45:55 +00:00
kern_sema.c
kern_shutdown.c On shutdown try to turn off all swap devices. This way GEOM providers are 2006-04-10 10:03:41 +00:00
kern_sig.c Remove various bits of conditional Alpha code and fixup a few comments. 2006-05-12 05:04:46 +00:00
kern_subr.c
kern_switch.c Add scheduler CORE, the work I have done half a year ago, recent, 2006-06-13 13:12:56 +00:00
kern_sx.c Adjust td_locks for non-spin mutexes, rwlocks, and sx locks so that it is 2006-07-27 21:45:55 +00:00
kern_synch.c Use scheduler API sched_relinquish() to implement yield() syscall. 2006-06-15 06:41:57 +00:00
kern_syscalls.c
kern_sysctl.c Kill an XXX remark that has been untrue since rev. 1.150 of this file. 2006-06-16 07:36:18 +00:00
kern_tc.c Add a kern.timecounter.tc sysctl tree that contains the mask, 2006-06-16 20:29:05 +00:00
kern_thr.c Add syscalls thr_setscheduler, thr_getscheduler, and thr_setschedparam, 2006-07-13 06:26:43 +00:00
kern_thread.c o Fix typo in the comment. 2006-06-30 08:10:55 +00:00
kern_time.c Let kernel POSIX timer code and mqueue code to use integer as a resource 2006-03-01 06:29:34 +00:00
kern_timeout.c Use the recently added msleep_spin() function to simplify the 2006-02-23 19:13:12 +00:00
kern_umtx.c Move flag TDF_UMTXQ into structure umtxq, this eliminates the requirement 2006-05-18 08:43:46 +00:00
kern_uuid.c Separate functions with a newline. 2006-07-17 21:00:42 +00:00
kern_xxx.c
ksched.c Return priority range 0..PRI_MAX_TIMESHARE-PRI_MIN_TIMESHARE for 2006-07-12 05:54:17 +00:00
link_elf_obj.c Replace the kld_mtx mutex with a kld_sx sx lock and expand it's scope to 2006-06-21 20:42:08 +00:00
link_elf.c Let native elf class be registered earlier. 2006-07-14 22:39:18 +00:00
linker_if.m
Make.tags.inc
Makefile Add a 'sysent' target that depends on the various files built from 2005-07-13 20:50:17 +00:00
makesyscalls.sh Now that all system calls are MPSAFE, retire the SYF_MPSAFE flag used to 2006-07-28 19:05:28 +00:00
md4c.c
md5c.c Fix a panic on sparc64 related to inproper aligment - we cannot assume, 2006-03-30 18:45:50 +00:00
p1003_1b.c Backout the feature which can change thread's scheduling option, I really 2006-07-13 06:41:26 +00:00
posix4_mib.c
sched_4bsd.c o Fix grammar in the comment, indent macros. No functional changes. 2006-07-02 20:53:52 +00:00
sched_core.c Fix a bug when accumulating run time, if a thread calls yield() syscall, 2006-06-29 12:29:20 +00:00
sched_ule.c Add scheduler API sched_relinquish(), the API is used to implement 2006-06-15 06:37:39 +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
subr_acl_posix1e.c Update and reformat comments for POSIX.1e ACL utility routines. 2006-07-23 19:35:10 +00:00
subr_autoconf.c Add a mutex to protect the list of interrupt config hooks. We do assume 2006-07-19 18:53:56 +00:00
subr_blist.c
subr_bus.c Create bus_enumerate_hinted_children. This routine will allow drivers 2006-07-08 17:06:15 +00:00
subr_clist.c
subr_clock.c Remove more straggling CPU_ macro references 2006-05-11 17:53:26 +00:00
subr_devstat.c - Remove two mtx_asserts that can incorrectly trigger if 2005-05-03 10:58:05 +00:00
subr_disk.c Unexpand TAILQ_FIRST(foo) == NULL to TAILQ_EMPTY(foo). 2006-05-29 05:43:26 +00:00
subr_eventhandler.c
subr_firmware.c If linker_release_module() fails then we still hold a reference on 2006-06-25 12:36:21 +00:00
subr_hints.c Use a sleep mutex instead of an sx lock for the kernel environment. This 2006-07-09 21:42:58 +00:00
subr_kdb.c Add a funny sysctl: debug.kdb.trap_code . 2006-06-18 12:27:59 +00:00
subr_kobj.c Increment kobj_lookup_misses on a miss rather than decrementing it. 2005-12-29 18:00:42 +00:00
subr_lock.c Add a basic reader/writer lock implementation to the kernel. This 2006-01-27 23:13:26 +00:00
subr_log.c
subr_mbpool.c
subr_mchain.c Change API of mb_copy_t in libmchain so that netsmb can handle 2005-07-29 13:22:37 +00:00
subr_module.c
subr_msgbuf.c
subr_param.c Partially revert revision 1.66, which contained a change that did not 2005-10-14 19:15:10 +00:00
subr_pcpu.c Fix 'show allpcpu' ddb command on non-x86. CPU IDs are in the range 0 .. 2005-11-03 21:06:29 +00:00
subr_power.c General consensus is that it would be even better to run this in a 2005-11-09 16:22:56 +00:00
subr_prf.c Simplify the pager support in DDB. Allowing different db commands to 2006-07-12 21:22:44 +00:00
subr_prof.c Change the addupc_*() functions to use the uintfptr_t type for pc rather 2005-12-16 22:08:32 +00:00
subr_rman.c Add a convenience function rman_init_from_resource for initializing 2006-06-12 04:06:21 +00:00
subr_rtc.c Remove more straggling CPU_ macro references 2006-05-11 17:53:26 +00:00
subr_sbuf.c Make sbuf_copyin() return the number of bytes copied on success. 2005-12-23 11:49:53 +00:00
subr_scanf.c
subr_sleepqueue.c Print td_name instead of p_comm if td_name is non-empty for 2006-04-21 20:40:43 +00:00
subr_smp.c Rename the KDB_STOP_NMI kernel option to STOP_NMI and make it apply to all 2005-10-24 21:04:19 +00:00
subr_stack.c Correct typos 2006-05-28 22:15:28 +00:00
subr_taskqueue.c When starting up threads in taskqueue_start_threads create them 2006-05-24 22:11:07 +00:00
subr_trap.c Test before modifying p_sflag to avoid unconditionally cache line 2006-02-10 14:59:16 +00:00
subr_turnstile.c Honor db_pager_quit in 'show threadchain', 'show allchains', and 2006-07-12 21:25:24 +00:00
subr_unit.c Remove debugging printfs. 2005-03-14 06:51:29 +00:00
subr_witness.c Use db_lookup_thread() to lookup the thread for the passed in address 2006-04-25 20:24:23 +00:00
sys_generic.c - Split ioctl() up into ioctl() and kern_ioctl(). The kern_ioctl() assumes 2006-07-08 20:12:14 +00:00
sys_pipe.c Move some functions and definitions from uipc_socket2.c to uipc_socket.c: 2006-06-10 14:34:07 +00:00
sys_process.c Close some races between procfs/ptrace and exit(2): 2006-02-22 18:57:50 +00:00
sys_socket.c soreceive_generic(), and sopoll_generic(). Add new functions sosend(), 2006-07-24 15:20:08 +00:00
syscalls.c Regen for MPSAFE flag removal. 2006-07-28 19:08:37 +00:00
syscalls.master Now that all system calls are MPSAFE, retire the SYF_MPSAFE flag used to 2006-07-28 19:05:28 +00:00
sysv_ipc.c
sysv_msg.c Move some functions and definitions from uipc_socket2.c to uipc_socket.c: 2006-06-10 14:34:07 +00:00
sysv_sem.c Use proper format specifier for pointers in debug printfs (turned off 2006-07-12 11:41:53 +00:00
sysv_shm.c Move some functions and definitions from uipc_socket2.c to uipc_socket.c: 2006-06-10 14:34:07 +00:00
tty_compat.c Move the old BSD4.3 tty compatibility from (!BURN_BRIDGES && COMPAT_43) 2006-01-10 09:19:10 +00:00
tty_conf.c
tty_cons.c If the console has no cncheckc method, use cngetc instead. 2006-05-26 11:00:20 +00:00
tty_pts.c Also check use_pty in the ptmx clone lookup; this means that when ptmx 2006-04-28 21:39:57 +00:00
tty_pty.c Don't destroy the slave /dev entry until someone figures out why devfs seems 2006-02-02 20:35:45 +00:00
tty_subr.c
tty_tty.c Merge the dev_clone and dev_clone_cred event handlers into a single 2005-08-08 19:55:32 +00:00
tty.c Move the old BSD4.3 tty compatibility from (!BURN_BRIDGES && COMPAT_43) 2006-01-10 09:19:10 +00:00
uipc_accf.c o setsockopt(2) cannot remove accept filter. [1] 2005-06-11 11:59:48 +00:00
uipc_cow.c Previously, nothing prevented the page that was returned by pmap_extract() 2005-10-23 07:41:56 +00:00
uipc_domain.c soreceive_generic(), and sopoll_generic(). Add new functions sosend(), 2006-07-24 15:20:08 +00:00
uipc_mbuf2.c Define four constants, MBUF_{,MEM,CLUSTER,PACKET,TAG}_MEM_NAME, which 2005-07-17 14:04:03 +00:00
uipc_mbuf.c Move some functions and definitions from uipc_socket2.c to uipc_socket.c: 2006-06-10 14:34:07 +00:00
uipc_mqueue.c Change msleep() and tsleep() to not alter the calling thread's priority 2006-04-17 18:20:38 +00:00
uipc_proto.c Remove UNIX domain socket raw socket support. This feature is documented 2006-04-09 16:29:47 +00:00
uipc_sem.c Convert remaining functions to ANSI C function declarations. 2006-01-22 00:30:46 +00:00
uipc_sockbuf.c Remove non-socket buffer routines from uipc_sockbuf.c, and socket buffer 2006-07-24 16:21:31 +00:00
uipc_socket2.c Remove non-socket buffer routines from uipc_sockbuf.c, and socket buffer 2006-07-24 16:21:31 +00:00
uipc_socket.c soreceive_generic(), and sopoll_generic(). Add new functions sosend(), 2006-07-24 15:20:08 +00:00
uipc_syscalls.c Fix a file descriptor race I reintroduced when I split accept1() up into 2006-07-27 19:54:41 +00:00
uipc_usrreq.c Close a race that occurs when using sendto() to connect and send on a 2006-07-31 23:00:05 +00:00
vfs_acl.c Move POSIX.1e-specific utility routines from kern_acl.c to 2006-07-06 23:37:39 +00:00
vfs_aio.c Make lio ident more consistant with aio ident. 2006-06-02 17:45:48 +00:00
vfs_bio.c Eliminate OBJ_WRITEABLE. It hasn't been used in a long time. 2006-07-21 06:40:29 +00:00
vfs_cache.c Axe Giant from vn_fullpath(9). The vnode -> pathname lookup should be 2006-06-16 05:09:28 +00:00
vfs_cluster.c Remove unused leaked debug function prototype. 2006-03-21 01:04:24 +00:00
vfs_default.c - GETWRITEMOUNT now returns a referenced mountpoint to prevent its 2006-03-31 03:52:24 +00:00
vfs_export.c Normalize a significant number of kernel malloc type names: 2005-10-31 15:41:29 +00:00
vfs_extattr.c Hold the reference on the mountpoint slightly longer in kern_statfs() and 2006-07-27 20:00:27 +00:00
vfs_hash.c In vfs_hash_get(): mount point should never be changed 2006-04-18 08:05:08 +00:00
vfs_init.c Remove duplicate security checks already performed in kern_kldload(). 2006-06-26 18:33:32 +00:00
vfs_lookup.c Lock giant when assigning ni_vp and keep vfslocked state valid. 2006-04-29 07:13:49 +00:00
vfs_mount.c - Expand the scope of Giant some in mount(2) to protect the vfsp structure 2006-06-27 14:46:31 +00:00
vfs_subr.c Enable debug.mpsafevfs by default on arm. Since every architecture except 2006-07-15 06:44:27 +00:00
vfs_syscalls.c Hold the reference on the mountpoint slightly longer in kern_statfs() and 2006-07-27 20:00:27 +00:00
vfs_vnops.c Simplify the code and remove two mutex operations. 2006-06-24 22:55:43 +00:00
vnode_if.src Remove two locking assertion entries that: 2006-05-31 14:06:06 +00:00