freebsd-dev/sys/kern
Konstantin Belousov aab4f50170 Prevent the hiwatermark for the unix domain socket from becoming
effectively negative. Often seen as upstream fastcgi connection timeouts
in nginx when using sendfile over unix domain sockets for communication.

Sendfile(2) may send more bytes then currently allowed by the
hiwatermark of the socket, e.g. because the so_snd sockbuf lock is
dropped after sbspace() call in the kern_sendfile() loop. In this case,
recalculated hiwatermark will overflow. Since lowatermark is renewed
as half of the hiwatermark by sendfile code, and both are unsigned,
the send buffer never reaches the free space requested by lowatermark,
causing indefinite wait in sendfile.

Reviewed by:	rwatson
Approved by:	re (bz)
MFC after:	2 weeks
2011-08-20 16:12:29 +00:00
..
bus_if.m Add a new bus method, BUS_ADJUST_RESOURCE() that is intended to be a 2011-04-29 21:36:45 +00:00
capabilities.conf Add experimental support for process descriptors 2011-08-18 22:51:30 +00:00
clock_if.m
cpufreq_if.m
device_if.m Update comments for DEVICE_PROBE() to reflect that BUS_PROBE_DEFAULT is 2011-05-24 13:22:40 +00:00
genassym.sh
imgact_aout.c Do not trash the argv[0] pointer for an a.out process on amd64. 2011-06-16 22:00:59 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c All the racct_*() calls need to happen with the proc locked. Fixing this 2011-07-06 20:06:44 +00:00
imgact_gzip.c
imgact_shell.c
inflate.c
init_main.c Add experimental support for process descriptors 2011-08-18 22:51:30 +00:00
init_sysent.c Auto-generated system call code based on r224987. 2011-08-18 23:08:52 +00:00
kern_acct.c
kern_alq.c
kern_clock.c - Remove the eintrcnt/eintrnames usage and introduce the concept of 2011-07-18 15:19:40 +00:00
kern_clocksource.c Set negative quality to TSC timecounter when C3 state is enabled for Intel 2011-06-22 16:40:45 +00:00
kern_condvar.c
kern_conf.c Fix the devmtx lock leak from make_dev(9) when the old device cloning 2011-07-30 14:12:37 +00:00
kern_cons.c
kern_context.c
kern_cpu.c
kern_cpuset.c Fix KTR_CPUMASK in order to accept a string representing a cpuset_t. 2011-05-31 20:48:58 +00:00
kern_ctf.c
kern_descrip.c Add experimental support for process descriptors 2011-08-18 22:51:30 +00:00
kern_dtrace.c
kern_environment.c In init_dynamic_kenv(), ignore environment strings exceeding the 2011-05-23 16:40:44 +00:00
kern_et.c
kern_event.c Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
kern_exec.c Second-to-last commit implementing Capsicum capabilities in the FreeBSD 2011-08-11 12:30:23 +00:00
kern_exit.c Add experimental support for process descriptors 2011-08-18 22:51:30 +00:00
kern_fail.c Add an option to have a fail point term only execute when run by a 2011-07-08 20:41:12 +00:00
kern_fork.c Add experimental support for process descriptors 2011-08-18 22:51:30 +00:00
kern_gzio.c
kern_hhook.c
kern_idle.c On multi-core, multi-threaded PPC systems, it is important that the threads 2011-05-31 15:11:43 +00:00
kern_intr.c - Remove the eintrcnt/eintrnames usage and introduce the concept of 2011-07-18 15:19:40 +00:00
kern_jail.c Always disable mount and unmount for jails with enforce_statfs==2. 2011-08-02 19:44:40 +00:00
kern_khelp.c
kern_kthread.c Add experimental support for process descriptors 2011-08-18 22:51:30 +00:00
kern_ktr.c Fix KTR_CPUMASK in order to accept a string representing a cpuset_t. 2011-05-31 20:48:58 +00:00
kern_ktrace.c
kern_linker.c Don't leak kld_sx lock in kldunloadf(). 2011-07-31 13:49:15 +00:00
kern_lock.c Fix the LK_NOSHARE lockmgr flag interaction with LK_UPGRADE and 2011-08-01 19:07:03 +00:00
kern_lockf.c
kern_lockstat.c
kern_loginclass.c
kern_malloc.c
kern_mbuf.c
kern_mib.c Define two new sysctl node flags: CTLFLAG_CAPRD and CTLFLAG_CAPRW, which 2011-07-17 23:05:24 +00:00
kern_module.c
kern_mtxpool.c
kern_mutex.c
kern_ntptime.c
kern_osd.c
kern_physio.c
kern_pmc.c Commit the support for removing cpumask_t and replacing it directly with 2011-05-05 14:39:14 +00:00
kern_poll.c
kern_priv.c
kern_proc.c One of the general principles of the sysctl(3) API is that a user can 2011-08-18 22:20:45 +00:00
kern_prot.c
kern_racct.c Rename resource names to match these in login.conf. 2011-07-14 19:18:17 +00:00
kern_rctl.c Rename resource names to match these in login.conf. 2011-07-14 19:18:17 +00:00
kern_resource.c - Export each thread's individual resource usage in in struct kinfo_proc's 2011-07-18 17:33:08 +00:00
kern_rmlock.c Remove pc_cpumask and pc_other_cpus usage from MI code. 2011-06-13 13:28:31 +00:00
kern_rwlock.c
kern_sdt.c
kern_sema.c
kern_shutdown.c remove RESTARTABLE_PANICS option 2011-07-25 09:12:48 +00:00
kern_sig.c Add experimental support for process descriptors 2011-08-18 22:51:30 +00:00
kern_switch.c
kern_sx.c
kern_synch.c Simplify a stale assertion. We have not called mi_switch() from a nested 2011-05-24 13:17:08 +00:00
kern_syscalls.c
kern_sysctl.c Define two new sysctl node flags: CTLFLAG_CAPRD and CTLFLAG_CAPRW, which 2011-07-17 23:05:24 +00:00
kern_tc.c If TSC stops ticking in C3, disable deep sleep when the user forcefully 2011-07-14 21:00:26 +00:00
kern_thr.c All the racct_*() calls need to happen with the proc locked. Fixing this 2011-07-06 20:06:44 +00:00
kern_thread.c
kern_time.c
kern_timeout.c
kern_umtx.c
kern_uuid.c
kern_xxx.c
ksched.c Use p4prio_to_tsprio to calculate TS priority instead of using 2011-06-07 02:50:14 +00:00
link_elf_obj.c Remove malloc(9) return value checks when M_WAITOK is used. 2011-04-16 16:20:51 +00:00
link_elf.c Even if the loaded module has no symbols, we still need to notify 2011-06-16 17:41:21 +00:00
linker_if.m
Make.tags.inc Update tags build script 2011-07-10 00:53:04 +00:00
Makefile
makesyscalls.sh
md4c.c
md5c.c
p1003_1b.c
posix4_mib.c Define two new sysctl node flags: CTLFLAG_CAPRD and CTLFLAG_CAPRW, which 2011-07-17 23:05:24 +00:00
sched_4bsd.c Remove pc_cpumask and pc_other_cpus usage from MI code. 2011-06-13 13:28:31 +00:00
sched_ule.c Remove explicit MAXCPU usage from sys/pcpu.h avoiding a namespace 2011-07-19 16:50:55 +00:00
serdev_if.m
stack_protector.c
subr_acl_nfs4.c
subr_acl_posix1e.c
subr_autoconf.c
subr_blist.c
subr_bufring.c
subr_bus.c Add a new bus method, BUS_ADJUST_RESOURCE() that is intended to be a 2011-04-29 21:36:45 +00:00
subr_clock.c
subr_devstat.c Instead of using an atomic operation to determine whether the devstat(9) 2011-06-13 22:08:24 +00:00
subr_disk.c
subr_eventhandler.c
subr_fattime.c
subr_firmware.c
subr_hash.c
subr_hints.c
subr_kdb.c Fix a mismerge. 2011-06-27 13:02:23 +00:00
subr_kobj.c
subr_lock.c
subr_log.c
subr_mbpool.c
subr_mchain.c
subr_module.c
subr_msgbuf.c Fix a bug introduced in revision 222537. 2011-05-31 22:39:32 +00:00
subr_param.c
subr_pcpu.c Remove pc_name member of struct pcpu. 2011-07-19 14:57:59 +00:00
subr_power.c
subr_prf.c Set pca.p_bufr to NULL when we haven't allocated a buffer. 2011-06-07 05:04:37 +00:00
subr_prof.c
subr_rman.c Clear the device_t pointer in 'struct resource' when releasing a device 2011-06-06 13:12:56 +00:00
subr_rtc.c
subr_sbuf.c r222015 introduced a new assertion that the size of a fixed-length sbuf 2011-08-19 08:29:10 +00:00
subr_scanf.c
subr_sglist.c
subr_sleepqueue.c
subr_smp.c smp_rendezvous: master cpu should wait until all slaves are fully done 2011-07-30 20:29:39 +00:00
subr_stack.c
subr_taskqueue.c Implement the delayed task execution extension to the taskqueue 2011-04-26 11:39:56 +00:00
subr_trap.c We may split today's CAPABILITIES into CAPABILITY_MODE (which has 2011-06-29 13:03:05 +00:00
subr_turnstile.c
subr_uio.c Add a facility to disable processing page faults. When activated, 2011-07-09 15:21:10 +00:00
subr_unit.c
subr_witness.c
sys_capability.c Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
sys_generic.c poll(2) implementation for capabilities. 2011-08-16 14:14:56 +00:00
sys_pipe.c Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
sys_procdesc.c Add experimental support for process descriptors 2011-08-18 22:51:30 +00:00
sys_process.c Add comment from CSRG rev 7.27 (1992/06/23 19:56:55; author: mckusick) 2011-06-17 21:44:13 +00:00
sys_socket.c Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
syscalls.c Auto-generated system call code based on r224987. 2011-08-18 23:08:52 +00:00
syscalls.master Add experimental support for process descriptors 2011-08-18 22:51:30 +00:00
systrace_args.c Auto-generated system call code based on r224987. 2011-08-18 23:08:52 +00:00
sysv_ipc.c
sysv_msg.c All the racct_*() calls need to happen with the proc locked. Fixing this 2011-07-06 20:06:44 +00:00
sysv_sem.c Remove semaphore map entry count "semmap" field and its tuning 2011-07-14 14:18:14 +00:00
sysv_shm.c All the racct_*() calls need to happen with the proc locked. Fixing this 2011-07-06 20:06:44 +00:00
tty_compat.c
tty_info.c
tty_inq.c Fix whitespace inconsistencies in the TTY layer and its drivers owned by me. 2011-06-26 18:26:20 +00:00
tty_outq.c Fix whitespace inconsistencies in the TTY layer and its drivers owned by me. 2011-06-26 18:26:20 +00:00
tty_pts.c Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
tty_tty.c
tty_ttydisc.c Fix whitespace inconsistencies in the TTY layer and its drivers owned by me. 2011-06-26 18:26:20 +00:00
tty.c Second-to-last commit implementing Capsicum capabilities in the FreeBSD 2011-08-11 12:30:23 +00:00
uipc_accf.c
uipc_cow.c
uipc_debug.c
uipc_domain.c
uipc_mbuf2.c
uipc_mbuf.c
uipc_mqueue.c Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
uipc_sem.c Fix build breakage. Initialize error variables explicitely for !MAC case. 2011-08-17 12:37:14 +00:00
uipc_shm.c Fix build breakage. Initialize error variables explicitely for !MAC case. 2011-08-17 12:37:14 +00:00
uipc_sockbuf.c
uipc_socket.c In the experimental soreceive_stream(): 2011-07-08 10:50:13 +00:00
uipc_syscalls.c Second-to-last commit implementing Capsicum capabilities in the FreeBSD 2011-08-11 12:30:23 +00:00
uipc_usrreq.c Prevent the hiwatermark for the unix domain socket from becoming 2011-08-20 16:12:29 +00:00
vfs_acl.c Second-to-last commit implementing Capsicum capabilities in the FreeBSD 2011-08-11 12:30:23 +00:00
vfs_aio.c Second-to-last commit implementing Capsicum capabilities in the FreeBSD 2011-08-11 12:30:23 +00:00
vfs_bio.c Call pmap_qremove() before freeing or unwiring the pages, otherwise 2011-07-05 18:40:37 +00:00
vfs_cache.c
vfs_cluster.c
vfs_default.c Add a lock flags argument to the VFS_FHTOVP() file system 2011-05-22 01:07:54 +00:00
vfs_export.c
vfs_extattr.c Second-to-last commit implementing Capsicum capabilities in the FreeBSD 2011-08-11 12:30:23 +00:00
vfs_hash.c
vfs_init.c
vfs_lookup.c Allow Capsicum capabilities to delegate constrained 2011-08-13 09:21:16 +00:00
vfs_mount.c Revert r224655 and r224614 because vn_fullpath* does not always work 2011-08-08 14:02:08 +00:00
vfs_mountroot.c Include sys/sbuf.h directly. 2011-07-11 05:17:46 +00:00
vfs_subr.c Move the MNTK_SUJ flag in mnt_kern_flag to MNT_SUJ in mnt_flag 2011-07-24 18:27:09 +00:00
vfs_syscalls.c Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
vfs_vnops.c Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
vnode_if.src Correctly use INOUT for the offset/len parameters to vop_allocate. As 2011-05-13 14:29:28 +00:00