freebsd-nq/sys/kern
Jilles Tjoelker cd31b6dd08 socket: Make shutdown() wake up a blocked accept().
A blocking accept (and some other operations) waits on &so->so_timeo. Once
it wakes up, it will detect the SBS_CANTRCVMORE bit.

The error from accept() is [ECONNABORTED] which is not the nicest one -- the
thread calling accept() needs to know out-of-band what is happening.

A spurious wakeup on so->so_timeo appears harmless (sleep retried) except
when lingering on close (SO_LINGER, and in that case there is no descriptor
to call shutdown() on) so this should be fairly safe.

A shutdown() already woke up a blocked accept() for TCP sockets, but not for
Unix domain sockets. This fix is generic for all domains.

This patch was sent to -hackers@ and -net@ on April 5.

MFC after:	2 weeks
2013-04-30 15:06:30 +00:00
..
bus_if.m
capabilities.conf Implement chflagsat(2) system call, similar to fchmodat(2), but operates on 2013-03-21 22:59:01 +00:00
clock_if.m
cpufreq_if.m
device_if.m
dtio_kdtrace.c
genassym.sh
imgact_aout.c
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Add a new set of notes to a process core dump to store procstat data. 2013-04-16 19:19:14 +00:00
imgact_gzip.c - Correct mispellings of the word necessary 2013-04-17 11:42:40 +00:00
imgact_shell.c
inflate.c
init_main.c MFP4 change 210763 2013-04-03 22:24:36 +00:00
init_sysent.c Regen. 2013-04-02 05:30:52 +00:00
kern_acct.c
kern_alq.c
kern_clock.c Add a generic way to call per event allocate / release function. 2013-03-05 10:18:48 +00:00
kern_clocksource.c - Make callout(9) tickless, relying on eventtimers(4) as backend for 2013-03-04 11:09:56 +00:00
kern_condvar.c MFcalloutng: 2013-03-04 12:20:48 +00:00
kern_conf.c Reject spaces and double quotation marks in device names. devctl(4) 2012-12-22 13:33:28 +00:00
kern_cons.c
kern_context.c
kern_cpu.c
kern_cpuset.c
kern_ctf.c
kern_descrip.c Re-factor the code to provide kern_proc_filedesc_out(), kern_proc_out(), 2013-04-14 20:01:36 +00:00
kern_dtrace.c
kern_environment.c r249408 and r249436 cause a NULL pointer dereference on the CUBIEBOARD 2013-04-16 22:09:08 +00:00
kern_et.c Fix incorrect assertion that caused panic when periodic-only timers used. 2013-03-13 06:42:01 +00:00
kern_event.c Rework overflow checks of r247898 to not let too "intelligent" compiler to 2013-03-09 09:07:13 +00:00
kern_exec.c Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
kern_exit.c Merge Capsicum overhaul: 2013-03-02 00:53:12 +00:00
kern_fail.c
kern_ffclock.c
kern_fork.c Include PID in the error message which is printed when the maxproc limit 2013-04-19 15:19:29 +00:00
kern_gzio.c
kern_hhook.c
kern_idle.c
kern_intr.c If filter of the interrupt event is not null, print it, in addition to 2013-04-05 14:30:51 +00:00
kern_jail.c prison_racct_detach can be called for not fully initialized jail, so make it check that the jail has racct before doing anything 2012-12-18 18:34:36 +00:00
kern_khelp.c
kern_kthread.c
kern_ktr.c ktr: correctly handle possible wrap-around in the boot buffer 2013-02-08 07:29:07 +00:00
kern_ktrace.c
kern_linker.c
kern_lock.c lockmgr: unlock interlock (if requested) when dealing with upgrade/downgrade 2013-01-06 21:47:59 +00:00
kern_lockf.c
kern_lockstat.c
kern_loginclass.c
kern_malloc.c Try to improve r242655 take III: move these SYSCTLs describing the kernel 2013-02-04 09:35:48 +00:00
kern_mbuf.c Base the calculation of maxmbufmem in part on kmem_map size 2013-04-24 13:54:55 +00:00
kern_mib.c fix some fat-fingering in r246246 2013-02-02 14:19:50 +00:00
kern_module.c
kern_mtxpool.c
kern_mutex.c Fixup r240424: On entering KDB backends, the hijacked thread to run 2012-12-22 09:37:34 +00:00
kern_ntptime.c
kern_osd.c
kern_physio.c Add dev_strategy_csw() function, which is similar to dev_strategy() 2013-03-27 11:34:27 +00:00
kern_pmc.c
kern_poll.c
kern_priv.c - Add sysctl to allow unprivileged users to call mlock(2)-family system 2012-12-18 07:36:45 +00:00
kern_proc.c Similarly to proc_getargv() and proc_getenvv(), export proc_getauxv() 2013-04-14 20:03:48 +00:00
kern_prot.c Style fix 2012-11-14 10:33:12 +00:00
kern_racct.c Accessing td_state requires thread lock to be held. 2013-03-14 23:20:18 +00:00
kern_rangelock.c
kern_rctl.c Add CPU percentage limit enforcement to RCTL. The resouce name is "pcpu". 2012-10-26 16:01:08 +00:00
kern_resource.c Call sched_prio() to immediately change the priority of the thread in 2013-03-07 02:53:29 +00:00
kern_rmlock.c Fixup r240424: On entering KDB backends, the hijacked thread to run 2012-12-22 09:37:34 +00:00
kern_rwlock.c Fixup r240424: On entering KDB backends, the hijacked thread to run 2012-12-22 09:37:34 +00:00
kern_sdt.c
kern_sema.c
kern_sharedpage.c Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
kern_shutdown.c Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
kern_sig.c Fix memory leak in coredump(). 2013-04-05 20:24:51 +00:00
kern_switch.c Add a comment on why inlining critical_enter() may not be a good idea 2012-12-09 04:54:22 +00:00
kern_sx.c Fixup r240424: On entering KDB backends, the hijacked thread to run 2012-12-22 09:37:34 +00:00
kern_synch.c Partially revert r195702. Deferring stops is now implemented via a set of 2013-03-18 17:23:58 +00:00
kern_syscalls.c
kern_sysctl.c - Use strdup(9) instead of reimplementing it. 2013-03-01 18:49:14 +00:00
kern_tc.c - Make callout(9) tickless, relying on eventtimers(4) as backend for 2013-03-04 11:09:56 +00:00
kern_thr.c
kern_thread.c Another NFS SIGSTOP related fix: Ignore thread suspend requests due to 2013-03-21 14:06:27 +00:00
kern_time.c Make kern_nanosleep() and pause_sbt() to use per-CPU sleep queues. 2013-03-12 06:58:49 +00:00
kern_timeout.c Cache the callout precision argument as part of the informations required 2013-03-25 09:43:50 +00:00
kern_umtx.c sem: Restart the POSIX sem_* calls after signals with SA_RESTART set. 2013-04-19 10:16:00 +00:00
kern_uuid.c
kern_xxx.c
ksched.c
link_elf_obj.c
link_elf.c
linker_if.m
Make.tags.inc
Makefile
makesyscalls.sh
md4c.c
md5c.c
p1003_1b.c
posix4_mib.c
sched_4bsd.c Add CPU percentage limit enforcement to RCTL. The resouce name is "pcpu". 2012-10-26 16:01:08 +00:00
sched_ule.c Point args[0] not at the thread that is ending but at the one that 2013-04-15 17:21:02 +00:00
serdev_if.m
stack_protector.c
subr_acl_nfs4.c
subr_acl_posix1e.c
subr_autoconf.c
subr_blist.c Remove reference to the rlist code from comments, and fix a typo visible 2013-02-05 20:08:33 +00:00
subr_bufring.c
subr_bus_dma.c Some compilers issue a warning when wider integer is casted to narrow 2013-04-16 07:11:52 +00:00
subr_bus.c Fix a typo. 2013-01-23 14:37:05 +00:00
subr_busdma_bufalloc.c Create an architecture-agnostic buffer pool manager that uses uma(9) to 2012-12-20 00:34:54 +00:00
subr_clock.c
subr_counter.c On non-ACPI i386 mp_ncpus is initialized at SI_SUB_CPU, and this 2013-04-17 18:43:33 +00:00
subr_devstat.c
subr_disk.c
subr_dummy_vdso_tc.c
subr_eventhandler.c
subr_fattime.c
subr_firmware.c
subr_hash.c
subr_hints.c
subr_kdb.c
subr_kobj.c
subr_lock.c - Implement run-time expansion of the KTR buffer via sysctl. 2012-11-15 00:51:57 +00:00
subr_log.c MFcalloutng (r244255 by mav, with minor changes): 2013-03-04 16:07:55 +00:00
subr_mbpool.c
subr_mchain.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
subr_module.c
subr_msgbuf.c
subr_param.c Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
subr_pcpu.c
subr_power.c
subr_prf.c
subr_prof.c
subr_rman.c
subr_rtc.c
subr_sbuf.c Add sbuf_start_section() and sbuf_end_section() functions, which can 2013-04-11 19:49:18 +00:00
subr_scanf.c
subr_sglist.c
subr_sleepqueue.c Partially revert r195702. Deferring stops is now implemented via a set of 2013-03-18 17:23:58 +00:00
subr_smp.c - Correctly handle EWOULDBLOCK in quiesce_cpus 2012-12-19 20:08:06 +00:00
subr_stack.c
subr_syscall.c Fix build on ARM (and probably other platforms) 2012-12-28 06:52:53 +00:00
subr_taskqueue.c Extend taskqueue(9) to enable per-taskqueue callbacks. 2013-03-23 15:11:53 +00:00
subr_trap.c Partially revert r195702. Deferring stops is now implemented via a set of 2013-03-18 17:23:58 +00:00
subr_turnstile.c Update the comment: we do show the backtrace of misbehaving thread. 2013-02-17 21:37:32 +00:00
subr_uio.c Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
subr_unit.c
subr_witness.c Correct the lock class for the vm object lock. 2013-03-09 10:16:08 +00:00
sys_capability.c Merge Capsicum overhaul: 2013-03-02 00:53:12 +00:00
sys_generic.c Rework overflow checks of r247898 to not let too "intelligent" compiler to 2013-03-09 09:07:13 +00:00
sys_pipe.c Rename do_pipe() to kern_pipe2() and declare it properly. 2013-03-31 17:42:54 +00:00
sys_procdesc.c Add the wait6(2) system call. It takes POSIX waitid()-like process 2012-11-13 12:52:31 +00:00
sys_process.c Switch some "low-hanging fruit" to acquire read lock on vmobjects 2013-04-08 19:58:32 +00:00
sys_socket.c
syscalls.c Regen. 2013-04-02 05:30:52 +00:00
syscalls.master Fix return type of extattr_set_* and fix rmextattr(8) utility. 2013-04-02 05:30:41 +00:00
systrace_args.c Regen. 2013-04-02 05:30:52 +00:00
sysv_ipc.c
sysv_msg.c
sysv_sem.c
sysv_shm.c Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
tty_compat.c
tty_info.c
tty_inq.c
tty_outq.c
tty_pts.c Allow O_CLOEXEC in posix_openpt() flags. 2013-03-21 21:39:15 +00:00
tty_tty.c
tty_ttydisc.c Correct SIGTTIN handling. 2012-10-25 09:05:21 +00:00
tty.c Merge Capsicum overhaul: 2013-03-02 00:53:12 +00:00
uipc_accf.c
uipc_cow.c
uipc_debug.c
uipc_domain.c - Implement two new system calls: 2013-03-02 21:11:30 +00:00
uipc_mbuf2.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
uipc_mbuf.c Fix bug in m_split() in a case when split len matches len of the 2013-03-29 14:10:40 +00:00
uipc_mqueue.c mqueue,ksem,shm: Fix race condition with setting UF_EXCLOSE. 2013-04-07 15:26:09 +00:00
uipc_sem.c sem: Restart the POSIX sem_* calls after signals with SA_RESTART set. 2013-04-19 10:16:00 +00:00
uipc_shm.c mqueue,ksem,shm: Fix race condition with setting UF_EXCLOSE. 2013-04-07 15:26:09 +00:00
uipc_sockbuf.c Once ng_ksocket(4) is fixed, re-apply r194662. See this revision for 2013-03-29 14:06:04 +00:00
uipc_socket.c socket: Make shutdown() wake up a blocked accept(). 2013-04-30 15:06:30 +00:00
uipc_syscalls.c Eliminate the layering violation in the kern_sendfile(). When quering 2013-04-28 19:12:09 +00:00
uipc_usrreq.c Add fdallocn function and use it when passing fds over unix socket. 2013-04-14 17:08:34 +00:00
vfs_acl.c Prezero the acl structure which is to be copied to usermode, to avoid 2013-02-06 15:18:46 +00:00
vfs_aio.c Fix a race with the vnode reclamation in the aio_qphysio(). Obtain 2013-03-27 11:47:52 +00:00
vfs_bio.c Add dev_strategy_csw() function, which is similar to dev_strategy() 2013-03-27 11:34:27 +00:00
vfs_cache.c When renaming a directory from one parent directory to another, 2013-03-20 17:57:00 +00:00
vfs_cluster.c Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
vfs_default.c Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
vfs_export.c Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +00:00
vfs_extattr.c Use a shared lock for VOP_GETEXTATTR, as it is a read-like operation. 2013-03-30 15:09:04 +00:00
vfs_hash.c Add exported vfs_hash_index() function, which calculates the canonical 2013-01-14 05:41:40 +00:00
vfs_init.c Don't worry if a module is already loaded when looking for a fstype to mount 2013-02-21 02:41:37 +00:00
vfs_lookup.c Do not call the VOP_LOOKUP() for the doomed directory vnode. The 2013-04-01 09:59:38 +00:00
vfs_mount.c - Correct mispellings of the word occurrence 2013-04-17 11:40:10 +00:00
vfs_mountroot.c post mountroot event after a real/final root is mounted 2013-03-23 08:59:34 +00:00
vfs_subr.c Allow the vnode to be unlocked for the weird case of 2013-04-16 14:22:16 +00:00
vfs_syscalls.c - Constify local path variable for chflagsat(). 2013-03-22 07:40:34 +00:00
vfs_vnops.c Use a shared lock for VOP_GETEXTATTR, as it is a read-like operation. 2013-03-30 15:09:04 +00:00
vnode_if.src remove vop_lookup_pre and vop_lookup_post 2012-11-22 10:36:10 +00:00