cvs commit: src/sys/kern imgact_elf.c vfs_lookup.c vfs_syscalls.c
Christian S.J. Peron
csjp at FreeBSD.org
Thu Sep 15 08:03:49 PDT 2005
csjp 2005-09-15 15:03:48 UTC
FreeBSD src repository
Modified files:
sys/kern imgact_elf.c vfs_lookup.c vfs_syscalls.c
Log:
Improve the MP safeness associated with the creation of symbolic
links and the execution of ELF binaries. Two problems were found:
1) The link path wasn't tagged as being MP safe and thus was not properly
protected.
2) The ELF interpreter vnode wasnt being locked in namei(9) and thus was
insufficiently protected.
This commit makes the following changes:
-Sets the MPSAFE flag in NDINIT for symbolic link paths
-Sets the MPSAFE flag in NDINIT and introduce a vfslocked variable which
will be used to instruct VFS_UNLOCK_GIANT to unlock Giant if it has been
picked up.
-Drop in an assertion into vfs_lookup which ensures that if the MPSAFE
flag is NOT set, that we have picked up giant. If not panic (if WITNESS
compiled into the kernel). This should help us find conditions where vnode
operations are in-sufficiently protected.
This is a RELENG_6 candidate.
Discussed with: jeff
MFC after: 4 days
Revision Changes Path
1.163 +7 -3 src/sys/kern/imgact_elf.c
1.82 +2 -0 src/sys/kern/vfs_lookup.c
1.394 +1 -1 src/sys/kern/vfs_syscalls.c
More information about the cvs-src
mailing list