140dedb81c
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 |
||
---|---|---|
.. | ||
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 |