freebsd-nq/sys/kern
Konstantin Belousov 14df601e47 When mnt_vnode_next_active iterator cannot lock the next vnode and
yields, specify the user priority for the yield.  Otherwise, a
higher-priority (kernel) thread could fall into the priority-inversion
with the thread owning the mutex lock.

On single-processor machines or UP kernels, do not loop adaptively
when the next vnode cannot be locked, instead yield unconditionally.

Restructure the iteration initializer and the iterator to remove code
duplication.  Put the code to fetch and lock a vnode next to the
current marker, into the mnt_vnode_next_active() function, and use it
instead of repeating the loop.

Reported by:	hrs, rmacklem
Tested by:	pho
Sponsored by:	The FreeBSD Foundation
MFC after:	3 days
2012-12-15 02:04:46 +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 support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +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 The execution of the shebang script requires putting interpreter path, 2011-03-06 22:59:30 +00:00
inflate.c
init_main.c Fix a race between kern_setitimer() and realitexpire(), where the 2012-12-04 20:49:39 +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 Implement the DTrace sched provider. This implementation aims to be 2012-05-15 01:30:25 +00:00
kern_clocksource.c panic() with reasonable message instead of returning zero frequency causing 2012-10-10 19:46:46 +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 Remove unused SI_* flags. 2012-08-28 19:30:29 +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 Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +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 The r241025 fixed the case when a binary, executed from nullfs mount, 2012-11-02 13:56:36 +00:00
kern_exit.c Restore the proper handling of the pid 0 for waitpid(2). 2012-11-16 06:32:38 +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 a special case for XEN, which is erronous and makes vfork(2) 2012-12-15 02:02:11 +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 Staticize malloc types. 2011-04-13 11:28:46 +00:00
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 Add optional entropy harvesting for software interrupts in swi_sched() 2012-09-25 14:55:46 +00:00
kern_jail.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_khelp.c Use the full and proper company name for Swinburne University of Technology 2011-04-12 08:13:18 +00:00
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 Use uint instead of int for flags exported via sysctl. 2012-12-07 05:55:48 +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 Check for lockmgr recursion in case of disown and downgrade and panic 2012-12-05 15:11:01 +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 Make r242655 build on sparc64. While at it, make vm_{max,min}_kernel_address 2012-11-08 08:10:32 +00:00
kern_mbuf.c Configure UMA warnings for the following zones: 2012-12-07 22:30:30 +00:00
kern_mib.c back out half of 244098. 2012-12-11 00:10:20 +00:00
kern_module.c Fix a typo. 2012-08-22 20:01:57 +00:00
kern_mtxpool.c
kern_mutex.c Give mtx(9) the ability to crunch different type of structures, with the 2012-10-31 13:38:56 +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 Account i/o done on cdevs. 2010-11-25 20:05:11 +00:00
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
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 Add an unified macro to deny ability from the compiler to reorder 2012-10-09 14:32:30 +00:00
kern_rwlock.c Merge r242395,242483 from mutex implementation: 2012-11-03 15:57:37 +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 Add kern.capmode_coredump sysctl/tunable to allow processes in capability mode 2012-11-27 10:38:11 +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 Remove all the checks on curthread != NULL with the exception of some MD 2012-09-13 22:26:22 +00:00
kern_synch.c Implement the DTrace sched provider. This implementation aims to be 2012-05-15 01:30:25 +00:00
kern_syscalls.c Call chainevh callback when we are invoked with neither MOD_LOAD nor 2010-10-21 20:31:50 +00:00
kern_sysctl.c Handle spurious page faults that may occur in no-fault sections of the 2012-03-22 04:52:51 +00:00
kern_tc.c Add support for walltimestamp in DTrace. 2012-07-16 20:17:19 +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 Make the updates of the tid ring buffer' head and tail pointers 2012-09-26 09:25:11 +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 Continue to introduce Capsicum Capability Mode support: 2011-03-01 13:28:27 +00:00
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 Retire PCONFIG and leave the priority of thread0 alone when waiting for 2011-01-06 22:09:37 +00:00
subr_blist.c - Fix typos s/(more|less) then|\1 than/ 2011-12-03 15:41:37 +00:00
subr_bufring.c
subr_bus.c Provide a generic way to disable devices at boot time 2012-10-02 03:33:41 +00:00
subr_clock.c Improve style and wording of comments and sysctl descriptions [1]. 2011-01-09 14:34:56 +00:00
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 Provide convenience function for obtaining MODINFO_ADDR and MODINFO_SIZE 2011-02-09 19:08:21 +00:00
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 Prevent long type overflow of realmem calculation on ILP32 by forcing 2012-12-10 12:19:03 +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 Tweak the commit message in case of panic for sleeping from threads 2012-09-12 22:05:54 +00:00
subr_smp.c - Implement run-time expansion of the KTR buffer via sysctl. 2012-11-15 00:51:57 +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 Move the checks for td_pinned, td_critnest, TDP_NOFAULTING and 2012-09-08 18:35:15 +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 Fixup r240246: hwpmc needs to retain the pinning until ASTs are not 2012-10-30 15:10:50 +00:00
subr_turnstile.c Improve check coverage about idle threads. 2012-09-12 22:10:53 +00:00
subr_uio.c Eliminate superfluous code. 2012-12-06 06:29:08 +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 Style: move opt_*.h includes in the proper place. 2012-06-10 20:22:10 +00:00
sys_generic.c Disconnect non-MPSAFE SMBFS from the build in preparation for dropping 2012-10-18 12:04:56 +00:00
sys_pipe.c I am comparing current pipe code with the one in 8.3-STABLE r236165, 2012-07-31 05:48:35 +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 Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +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 Finish r210923, 210926. Mark some devices as eternal. 2011-01-04 10:59:38 +00:00
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 Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
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 Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +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 Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
uipc_usrreq.c Configure UMA warnings for the following zones: 2012-12-07 22:30:30 +00:00
vfs_acl.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +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 Do not ignore zero address, possibly returned by the vm_map_find() 2012-12-10 05:14:04 +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 Correct a KASSERT message. 2012-08-15 22:12:01 +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 The group list for a non-default export entry (a host/subnet one) 2012-12-14 21:49:06 +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
vfs_init.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
vfs_lookup.c Fix one more compilation issue. 2012-12-01 08:59:36 +00:00
vfs_mount.c Fix typo. 2012-12-09 20:26:51 +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 When mnt_vnode_next_active iterator cannot lock the next vnode and 2012-12-15 02:04:46 +00:00
vfs_syscalls.c Remove unused `vfslocked' variable. 2012-10-22 21:14:26 +00:00
vfs_vnops.c - Add NOCAPCHECK flag to namei that allows lookup to work even if the process 2012-11-27 10:32:35 +00:00
vnode_if.src remove vop_lookup_pre and vop_lookup_post 2012-11-22 10:36:10 +00:00