freebsd-nq/sys/kern
John Baldwin 593efaf9f7 Further refine the handling of stop signals in the NFS client. The
changes in r246417 were incomplete as they did not add explicit calls to
sigdeferstop() around all the places that previously passed SBDRY to
_sleep().  In addition, nfs_getcacheblk() could trigger a write RPC from
getblk() resulting in sigdeferstop() recursing.  Rather than manually
deferring stop signals in specific places, change the VFS_*() and VOP_*()
methods to defer stop signals for filesystems which request this behavior
via a new VFCF_SBDRY flag.  Note that this has to be a VFC flag rather than
a MNTK flag so that it works properly with VFS_MOUNT() when the mount is
not yet fully constructed.  For now, only the NFS clients are set this new
flag in VFS_SET().

A few other related changes:
- Add an assertion to ensure that TDF_SBDRY doesn't leak to userland.
- When a lookup request uses VOP_READLINK() to follow a symlink, mark
  the request as being on behalf of the thread performing the lookup
  (cnp_thread) rather than using a NULL thread pointer.  This causes
  NFS to properly handle signals during this VOP on an interruptible
  mount.

PR:		kern/176179
Reported by:	Russell Cattelan (sigdeferstop() recursion)
Reviewed by:	kib
MFC after:	1 month
2013-02-21 19:02:50 +00:00
..
bus_if.m Add a BUS_CHILD_DELETED() method that a bus can hook to allow it to cleanup 2012-08-21 18:13:09 +00:00
capabilities.conf Allow to use kill(2) in capability mode, but process can send a signal only 2012-11-27 10:22:40 +00:00
clock_if.m
cpufreq_if.m
device_if.m Revert r239178 and implement two new functions, namely 2012-08-15 15:42:57 +00:00
dtio_kdtrace.c Change the module name for the I/O provider to "kernel" from 2012-09-25 19:16:28 +00:00
genassym.sh
imgact_aout.c Cosmetics: define FREEBSD32_MINUSER and AOUT32_MINUSER for struct 2012-07-22 13:41:45 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Remove the ia64-specific code fragment, which effect is more cleanly 2013-02-10 20:08:33 +00:00
imgact_gzip.c Remove an old hack I noticed years ago, but never committed. 2012-06-28 07:33:43 +00:00
imgact_shell.c
inflate.c
init_main.c print compiler version in the kernel banner 2013-02-02 11:58:35 +00:00
init_sysent.c Regenerate after r243610. 2012-11-27 10:25:03 +00:00
kern_acct.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_alq.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_clock.c Mark 'ticks', 'time_second', and 'time_uptime' as volatile to prevent the 2013-01-28 19:38:13 +00:00
kern_clocksource.c Get time of next event from other cores only if SMP is already started. 2013-02-01 11:39:03 +00:00
kern_condvar.c Remove all the checks on curthread != NULL with the exception of some MD 2012-09-13 22:26:22 +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 cngetc: use cpu_spinwait to ease the cncheckc loop a tiny bit 2012-10-06 19:50:23 +00:00
kern_context.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
kern_cpu.c Revert r175376 and tune cpufreq(4) frequency comparison logic instead. 2012-03-10 18:56:16 +00:00
kern_cpuset.c Post r222812 KTR_CPUMASK started being initialized only as a tunable 2012-08-30 21:22:47 +00:00
kern_ctf.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_descrip.c Don't treat pointers as booleans. 2013-02-17 11:47:30 +00:00
kern_dtrace.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
kern_environment.c Reserve room for the terminating NUL when setting or getting kernel 2012-08-14 19:16:30 +00:00
kern_et.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
kern_event.c Make the interval timings for EVFILT_TIMER more accurate. tvtohz() always 2012-07-13 13:24:33 +00:00
kern_exec.c When vforked child is traced, the debugging events are not generated 2013-02-07 15:34:22 +00:00
kern_exit.c When vforked child is traced, the debugging events are not generated 2013-02-07 15:34:22 +00:00
kern_fail.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
kern_ffclock.c Revise the sysctl handling code and restructure the hierarchy of sysctls 2011-12-01 07:19:13 +00:00
kern_fork.c Remove redundant parenthesis. 2013-02-17 11:47:01 +00:00
kern_gzio.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
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 If an interrupt event's assign_cpu method fails, then restore the original 2013-02-07 06:48:47 +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 Stop treating td_sigmask specially for the purposes of new thread 2012-05-26 20:03:47 +00:00
kern_ktr.c ktr: correctly handle possible wrap-around in the boot buffer 2013-02-08 07:29:07 +00:00
kern_ktrace.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_linker.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_lock.c lockmgr: unlock interlock (if requested) when dealing with upgrade/downgrade 2013-01-06 21:47:59 +00:00
kern_lockf.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
kern_lockstat.c
kern_loginclass.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
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 Move the mbuf memory limit calculations from init_param2() to 2013-01-17 21:28:31 +00:00
kern_mib.c fix some fat-fingering in r246246 2013-02-02 14:19:50 +00:00
kern_module.c Fix a typo. 2012-08-22 20:01:57 +00:00
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 Limit popcorn limit to something sane (either 2ns or 2 ticks if that's 2012-08-16 02:35:44 +00:00
kern_osd.c
kern_physio.c
kern_pmc.c Add software PMC support. 2012-03-28 20:58:30 +00:00
kern_poll.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
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 Look for zombie process only if we were given process id. 2012-11-25 19:31:42 +00:00
kern_prot.c Style fix 2012-11-14 10:33:12 +00:00
kern_racct.c Improve KASSERT messages in racct, to make it clear which resource 2012-11-15 15:55:49 +00:00
kern_rangelock.c Add a rangelock implementation, intended to be used to range-locking 2012-05-30 16:06:38 +00:00
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 Change kern.proc.rlimit sysctl to: 2012-01-22 20:25:00 +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 Instead of only iterating over the set of known SDT probes when sdt.ko is 2012-03-27 15:07:43 +00:00
kern_sema.c
kern_sharedpage.c Move the code dealing with shared page into a dedicated 2012-06-23 10:15:23 +00:00
kern_shutdown.c Switch the hardwired WITNESS panics to kassert_panic. 2012-12-11 01:23:50 +00:00
kern_sig.c Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +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 Fix some minor inaccuracies introduced in r243251. 2013-01-05 00:23:26 +00:00
kern_syscalls.c
kern_sysctl.c Update comments to reflect r246689. 2013-02-11 23:05:10 +00:00
kern_tc.c Add PPS_CANWAIT support for time_pps_fetch(). This adds support for all three 2013-02-15 18:30:32 +00:00
kern_thr.c Stop treating td_sigmask specially for the purposes of new thread 2012-05-26 20:03:47 +00:00
kern_thread.c Fix a few typos. 2013-02-19 16:35:27 +00:00
kern_time.c Fix a race between kern_setitimer() and realitexpire(), where the 2012-12-04 20:49:39 +00:00
kern_timeout.c Fixup r243901: 2012-12-05 22:32:12 +00:00
kern_umtx.c The fields of struct timespec32 should be int32_t and not uint32_t. 2012-10-27 23:42:41 +00:00
kern_uuid.c Convert all users of IF_ADDR_LOCK to use new locking macros that specify 2012-01-05 19:00:36 +00:00
kern_xxx.c
ksched.c sched_rr_interval() seems always returned period in hz ticks, but same 2012-08-10 18:19:57 +00:00
link_elf_obj.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
link_elf.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
linker_if.m
Make.tags.inc Disconnect non-MPSAFE SMBFS from the build in preparation for dropping 2012-10-18 12:04:56 +00:00
Makefile
makesyscalls.sh - Add the ffclock_getcounter(), ffclock_getestimate() and ffclock_setestimate() 2011-11-21 01:26:10 +00:00
md4c.c
md5c.c
p1003_1b.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
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 Add CPU percentage limit enforcement to RCTL. The resouce name is "pcpu". 2012-10-26 16:01:08 +00:00
sched_ule.c Fix bug in r242852 that prevented CPU from becoming idle if kernel built 2012-11-15 14:10:51 +00:00
serdev_if.m
stack_protector.c
subr_acl_nfs4.c Fix bug where NFSv4 ACL enforcement code wouldn't unconditionally 2012-04-17 14:54:00 +00:00
subr_acl_posix1e.c Add module load/unload stubs. 2012-03-13 20:27:48 +00:00
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 Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +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_devstat.c Fix build for kernels with dtrace hooks. 2012-07-11 18:50:50 +00:00
subr_disk.c
subr_dummy_vdso_tc.c Implement mechanism to export some kernel timekeeping data to 2012-06-22 07:06:40 +00:00
subr_eventhandler.c
subr_fattime.c
subr_firmware.c Correct sizeof usage 2012-06-25 05:41:16 +00:00
subr_hash.c Convert panic()s to KASSERT()s. This is an optimisation for 2012-01-23 16:31:46 +00:00
subr_hints.c Style fixes. 2012-09-04 23:16:55 +00:00
subr_kdb.c - Extend the KDB interface to add a per-debugger callback to print a 2012-04-12 17:43:59 +00:00
subr_kobj.c As it turns out, r186347 actually is insufficient to avoid the use of the 2011-11-15 20:11:03 +00:00
subr_lock.c - Implement run-time expansion of the KTR buffer via sysctl. 2012-11-15 00:51:57 +00:00
subr_log.c Add kqueue support to /dev/klog. 2012-02-01 14:34:52 +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 - Clean up timestamps in msgbuf code. The timestamps should now be 2012-03-19 00:36:32 +00:00
subr_param.c Move the mbuf memory limit calculations from init_param2() to 2013-01-17 21:28:31 +00:00
subr_pcpu.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
subr_power.c
subr_prf.c Fix double vision syndrome (read: double output) when in the 2011-10-16 14:16:46 +00:00
subr_prof.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
subr_rman.c Unlock in the error path to prevent a lock leak. 2012-05-31 17:27:05 +00:00
subr_rtc.c Core structure and functions to support a feed-forward clock within the kernel. 2011-11-19 14:10:16 +00:00
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 Xen netback driver rewrite. 2012-01-26 16:35:09 +00:00
subr_sglist.c
subr_sleepqueue.c Rework the handling of stop signals in the NFS client. The changes in 2013-02-06 17:06:51 +00:00
subr_smp.c - Correctly handle EWOULDBLOCK in quiesce_cpus 2012-12-19 20:08:06 +00:00
subr_stack.c Constify stack argument for functions that don't modify it. 2011-11-16 19:06:55 +00:00
subr_syscall.c Fix build on ARM (and probably other platforms) 2012-12-28 06:52:53 +00:00
subr_taskqueue.c Add a special meaning to the negative ticks argument for 2012-11-20 15:33:48 +00:00
subr_trap.c Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +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 Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
subr_unit.c Correct double "the the" 2012-09-14 21:28:56 +00:00
subr_witness.c Cleanup more of the kassert_panic. 2012-12-11 07:08:14 +00:00
sys_capability.c Remove redundant parenthesis. 2013-02-17 11:49:21 +00:00
sys_generic.c Do not force a writer to the devfs file to drain the buffer writes. 2012-12-23 22:43:27 +00:00
sys_pipe.c Remove redundant space. 2013-02-17 11:48:16 +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 When vforked child is traced, the debugging events are not generated 2013-02-07 15:34:22 +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 Regen 2012-11-13 12:53:41 +00:00
syscalls.master Add the wait6(2) system call. It takes POSIX waitid()-like process 2012-11-13 12:52:31 +00:00
systrace_args.c Regen 2012-11-13 12:53:41 +00:00
sysv_ipc.c
sysv_msg.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
sysv_sem.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
sysv_shm.c Close a race due to dropping of the map lock between creating a map entry 2012-02-19 00:28:49 +00:00
tty_compat.c
tty_info.c Fix whitespace inconsistencies in TTY code. 2012-02-06 18:15:46 +00:00
tty_inq.c Use strchr() and strrchr(). 2012-01-02 12:12:10 +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 Fix possible fp reference leak in posix_openpt 2012-11-18 15:48:34 +00:00
tty_tty.c
tty_ttydisc.c Correct SIGTTIN handling. 2012-10-25 09:05:21 +00:00
tty.c Fix typo; s/ouput/output 2012-11-07 07:00:59 +00:00
uipc_accf.c
uipc_cow.c
uipc_debug.c
uipc_domain.c There is no need anymore to include vm/uma.h after r241726. 2012-12-07 22:05:42 +00:00
uipc_mbuf2.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
uipc_mbuf.c - Move large functions m_getjcl() and m_get2() to kern/uipc_mbuf.c 2013-01-24 09:29:41 +00:00
uipc_mqueue.c Complete MPSAFE VFS interface and remove MNTK_MPSAFE flag. 2012-11-09 18:02:25 +00:00
uipc_sem.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
uipc_shm.c Export some more useful info about shared memory objects to userland 2012-04-01 18:22:48 +00:00
uipc_sockbuf.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
uipc_socket.c Configure UMA warnings for the following zones: 2012-12-07 22:30:30 +00:00
uipc_syscalls.c Audit sockaddr argument for bind(2), connect(2), accept(2), sendto(2) and 2013-02-07 00:36:00 +00:00
uipc_usrreq.c Add support of passing SCM_BINTIME ancillary data object for PF_LOCAL 2013-02-15 13:00:20 +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 Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
vfs_bio.c Add barrier write capability to the VFS buffer interface. A barrier 2013-02-16 14:51:30 +00:00
vfs_cache.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
vfs_cluster.c Add barrier write capability to the VFS buffer interface. A barrier 2013-02-16 14:51:30 +00:00
vfs_default.c The r241025 fixed the case when a binary, executed from nullfs mount, 2012-11-02 13:56:36 +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 Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +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 Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +00:00
vfs_mount.c Revert revision 244760 because strncpy pads trailing space with zero, 2013-01-04 11:11:12 +00:00
vfs_mountroot.c Do not allocate buffer of the 255 bytes length on the stack. 2012-12-04 20:49:04 +00:00
vfs_subr.c Add a trivial comment to record the proper commit log for r245407: 2013-01-14 05:52:23 +00:00
vfs_syscalls.c Style. 2013-02-17 11:56:36 +00:00
vfs_vnops.c vn_io_faults_cnt: 2013-02-15 14:22:05 +00:00
vnode_if.src remove vop_lookup_pre and vop_lookup_post 2012-11-22 10:36:10 +00:00