freebsd-skq/sys/miscfs
KATO Takenori 9095719e2b Quick-hack to avoid `lock against myself' panic. It is not the real
fix!

The ufs_link() assumes that vnode is not unlocked and tries to lock it
in certain case.  Because union_link calls VOP_LINK after locking vnode,
vn_lock in ufs_link causes above panic.

Currently, I don't know the real fix for a locking violation in
union_link, but I think it is important to avoid panic.

A vnode is unlocked before calling VOP_LINK and is locked after it if
the vnode is not union fs.  Even though panic went away, the process
that access the union fs in which link was made will hang-up.

Hang-up can be easily reproduced by following operation:

	mount -t union a b
	cd b
	ln foo bar
	ls
1997-04-15 12:56:57 +00:00
..
deadfs Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not 1997-02-22 09:48:43 +00:00
devfs Get the declaration of `struct dirent' from <sys/dirent.h>, not from 1997-04-10 15:05:38 +00:00
fdesc Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not 1997-02-22 09:48:43 +00:00
fifofs Don't include <sys/ioctl.h> in the kernel. Stage 3: include 1997-03-24 11:37:53 +00:00
kernfs Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not 1997-02-22 09:48:43 +00:00
nullfs Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not 1997-02-22 09:48:43 +00:00
portal Don't #include <sys/fcntl.h> in <sys/file.h> if KERNEL is defined. 1997-03-23 03:37:54 +00:00
procfs Fix the gdb executable modify problem. Thanks to the detective work 1997-04-06 02:29:45 +00:00
specfs Don't include <sys/ioctl.h> in the kernel. Stage 1: don't include 1997-03-24 11:25:10 +00:00
umapfs Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not 1997-02-22 09:48:43 +00:00
union Quick-hack to avoid `lock against myself' panic. It is not the real 1997-04-15 12:56:57 +00:00