freebsd-skq/sys
Konstantin Belousov 24bbc85bf6 The behaviour of the lockmgr going back at least to the 4.4BSD-Lite2 was
to downgrade the exclusive lock to shared one when exclusive lock owner
requested shared lock. New lockmgr panics instead.

The vnode_pager_lock function requests shared lock on the vnode backing
the OBJT_VNODE, and can be called when the current thread already holds
an exlcusive lock on the vnode. For instance, it happens when handling
page fault from the VOP_WRITE() uiomove that writes to the file, with
the faulted in page fetched from the vm object backed by the same file.
We then get the situation described above.

Verify whether the vnode is already exclusively locked by the curthread
and request recursed exclusive vnode lock instead of shared, if true.

Reported by:	gallatin
Discussed with:	attilio
2008-07-30 18:16:06 +00:00
..
amd64 Bring back the save/restore of the %ds, %es, %fs and %gs registers for 2008-07-30 11:30:55 +00:00
arm - Whitespace fixes. 2008-07-22 14:04:06 +00:00
boot Only descend into the boot directory for the architecture if it 2008-07-23 07:23:33 +00:00
bsm
cam Add quirk for the Samsung YP-U3 2008-07-09 17:00:14 +00:00
cddl We want to use LBOLT instead of lbolt on FreeBSD. 2008-07-21 14:35:48 +00:00
compat Add TIOCPKT and TIOCSPTLCK to the Linuxolator. 2008-07-23 17:47:44 +00:00
conf Unbreak build. 2008-07-30 00:39:25 +00:00
contrib 2020447 IPFilter's NAT can undo name server random port selection 2008-07-26 19:46:00 +00:00
crypto Convert lock that protects sessions list from a mutex to a rwlock. 2008-07-20 07:34:00 +00:00
ddb Print out the container lock when showing the thread state in DDB. 2008-06-18 20:42:01 +00:00
dev This updates the ixgbe driver to Intel internal version 1.4.7 2008-07-30 18:15:18 +00:00
fs Introduce a new lock, hostname_mtx, and use it to synchronize access 2008-07-05 13:10:10 +00:00
gdb Commit SYSINIT() ;-adding patch missed in previous pass. 2008-03-16 13:02:04 +00:00
geom Trivial commit to attempt to diagnose a svn problem. Add 2008-07-22 18:05:50 +00:00
gnu - Disallow XFS mounting in write mode. The write support never worked really 2008-07-21 23:01:09 +00:00
i386 Correct an off-by-one error in the previous change to pmap_change_attr(). 2008-07-28 05:41:35 +00:00
ia64 Update bus_dmamem_alloc()'s first call to malloc() such that M_WAITOK is 2008-07-15 03:34:49 +00:00
isa atrtc.c is a repocopy of the RTC device driver from i386/isa/clock.c 2008-04-14 07:57:15 +00:00
kern Remove the use of lbolt from the VFS syncer. 2008-07-30 12:39:18 +00:00
libkern Return arc4_i = arc4_j = 0; line from previous backing out since 2008-07-26 16:42:45 +00:00
mips In FreeBSD 7.0 and beyond, pmap_growkernel() should pass VM_ALLOC_INTERRUPT 2008-07-07 17:31:02 +00:00
modules Remove a file that is not used and does not exist. 2008-07-28 17:56:37 +00:00
net Add the ability to add new addresses for interfacesto just one FIB 2008-07-27 01:29:28 +00:00
net80211 don't deauth a station because it sends a ps-poll w/ a bogus aid in it; 2008-07-26 23:50:27 +00:00
netatalk Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
netgraph Simplify ubt_isoc_in_complete2(). Also should fix off by 1 bug. 2008-07-29 00:17:53 +00:00
netinet Fix build breakage - kthread_exit() in 8 now has no arguments 2008-07-29 09:30:50 +00:00
netinet6 Adopt the slightly weaker consistency locking approach used in IPv4 raw 2008-07-30 09:26:27 +00:00
netipsec Fill in a few sysctl descriptions. 2008-07-26 00:55:35 +00:00
netipx Begin the sysctl descriptions with a capital letter. 2008-07-25 23:54:07 +00:00
netnatm Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
netncp lockmgrs need to be released before to be destroyed and draining doesn't 2008-03-30 18:16:33 +00:00
netsmb Really, smb_iod_main() is not totally MPSAFE, so just acquire and drop 2008-03-27 01:23:59 +00:00
nfs Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
nfs4client Move the NFS/RPC code away from lbolt. 2008-07-22 21:27:22 +00:00
nfsclient Try again not to use a userspace pointer in the kernel when trying to record 2008-07-24 14:02:03 +00:00
nfsserver Remove spls from NFS server setup call; expand receive socket buffer 2008-06-30 20:43:06 +00:00
nlm Introduce a new lock, hostname_mtx, and use it to synchronize access 2008-07-05 13:10:10 +00:00
opencrypto
pc98 Add HWPMC_HOOKS to GENERIC kernels, this makes hwpmc.ko work out 2008-07-07 22:55:11 +00:00
pccard
pci Set all of the "optimum performance" PHY registers for the 15D parts as 2008-07-30 17:28:49 +00:00
powerpc Add HWPMC_HOOKS to GENERIC kernels, this makes hwpmc.ko work out 2008-07-07 22:55:11 +00:00
rpc Re-work the code slightly to avoid a possible livelock. 2008-07-23 09:18:08 +00:00
security Minor white space tweak. 2008-07-23 07:42:31 +00:00
sparc64 - Remove redundant inclusion of opt_global.h. 2008-07-21 17:15:51 +00:00
sun4v Add HWPMC_HOOKS to GENERIC kernels, this makes hwpmc.ko work out 2008-07-07 22:55:11 +00:00
sys Change the type of psaddr_t from void* to uintptr_t. A pointer 2008-07-30 00:59:19 +00:00
tools
ufs The ffs_balloc_ufs{1,2} functions call bdwrite() while having several 2008-07-23 14:32:44 +00:00
vm The behaviour of the lockmgr going back at least to the 4.4BSD-Lite2 was 2008-07-30 18:16:06 +00:00
xdr Add the new kernel-mode NFS Lock Manager. To use it instead of the 2008-03-26 15:23:12 +00:00
Makefile o Add cddl, nlm and xdr to CSCOPEDIRS. 2008-07-20 09:16:00 +00:00