freebsd-nq/sys/i386/ibcs2
Konstantin Belousov 140dedb81c The r241025 fixed the case when a binary, executed from nullfs mount,
was still possible to open for write from the lower filesystem.  There
is a symmetric situation where the binary could already has file
descriptors opened for write, but it can be executed from the nullfs
overlay.

Handle the issue by passing one v_writecount reference to the lower
vnode if nullfs vnode has non-zero v_writecount.  Note that only one
write reference can be donated, since nullfs only keeps one use
reference on the lower vnode.  Always use the lower vnode v_writecount
for the checks.

Introduce the VOP_GET_WRITECOUNT to read v_writecount, which is
currently always bypassed to the lower vnode, and VOP_ADD_WRITECOUNT
to manipulate the v_writecount value, which manages a single bypass
reference to the lower vnode.  Caling the VOPs instead of directly
accessing v_writecount provide the fix described in the previous
paragraph.

Tested by:	pho
MFC after:	3 weeks
2012-11-02 13:56:36 +00:00
..
coff.h
ibcs2_dirent.h
ibcs2_errno.c
ibcs2_errno.h
ibcs2_fcntl.c
ibcs2_fcntl.h
ibcs2_ioctl.c
ibcs2_ioctl.h
ibcs2_ipc.c
ibcs2_ipc.h
ibcs2_isc_syscall.h
ibcs2_isc_sysent.c
ibcs2_isc.c
ibcs2_misc.c
ibcs2_mount.h
ibcs2_msg.c
ibcs2_other.c
ibcs2_proto.h
ibcs2_signal.c
ibcs2_signal.h
ibcs2_socksys.c
ibcs2_socksys.h
ibcs2_stat.c
ibcs2_stat.h
ibcs2_statfs.h
ibcs2_stropts.h
ibcs2_syscall.h
ibcs2_sysent.c
ibcs2_sysi86.c
ibcs2_sysvec.c
ibcs2_termios.h
ibcs2_time.h
ibcs2_types.h
ibcs2_unistd.h
ibcs2_ustat.h
ibcs2_util.c
ibcs2_util.h
ibcs2_utime.h
ibcs2_utsname.h
ibcs2_xenix_syscall.h
ibcs2_xenix_sysent.c
ibcs2_xenix.c
ibcs2_xenix.h
imgact_coff.c
Makefile
syscalls.conf
syscalls.isc
syscalls.isc.conf
syscalls.master
syscalls.xenix
syscalls.xenix.conf