opnsense-src/sys
Christian S.J. Peron 68ff2a4397 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
2005-09-15 15:03:48 +00:00
..
alpha Eliminate unused definitions. 2005-09-11 20:51:15 +00:00
amd64 Canonize the include of acpi.h. 2005-09-11 18:39:03 +00:00
arm Move the prototypes of db_md_set_watchpoint(), db_md_clr_watchpoint() 2005-09-10 03:01:25 +00:00
boot Remove EPSON PC-386 note A/W/AE/WR support. 2005-09-14 12:39:06 +00:00
bsm For consistency with more system include files, add a trailing '_' to 2005-05-29 16:11:34 +00:00
cam Merge the dev_clone and dev_clone_cred event handlers into a single 2005-08-08 19:55:32 +00:00
coda Merge the dev_clone and dev_clone_cred event handlers into a single 2005-08-08 19:55:32 +00:00
compat Test the mbuf flags against the correct constant. The previous version 2005-08-30 16:21:51 +00:00
conf Add tnt4882 driver to the build 2005-09-15 13:28:33 +00:00
contrib Per a request from Nick Triantos of nVidia, nVidia's legal department asked 2005-09-11 17:50:20 +00:00
crypto Add VIA/ACE "PadLock" support as a crypto(9) driver. 2005-08-18 00:30:22 +00:00
ddb Move the prototypes of db_md_set_watchpoint(), db_md_clr_watchpoint() 2005-09-10 03:01:25 +00:00
dev First cut at a driver for National Instruments PCI-GPIB hardware. 2005-09-15 13:27:16 +00:00
doc
fs Various minor polishing. 2005-09-15 10:28:19 +00:00
gdb check return value of gdb_rx_varhex 2005-03-28 18:31:18 +00:00
geom Fix so that when a slice or a partition is removed through g_slice_config(), 2005-09-14 21:38:35 +00:00
gnu In ext2_mountfs(), check that the superblock size, SBSIZE, 2005-09-10 21:30:49 +00:00
i4b Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
i386 opt_pc98.h is not needed. 2005-09-12 13:50:56 +00:00
ia64 Eliminate unused definitions. 2005-09-11 20:51:15 +00:00
isa Add pnp and location info for the ISA bus. The pnp info is the 2005-08-01 07:03:10 +00:00
isofs/cd9660 - restore the ability to mount cd9660 filesystems as root by inverting 2005-08-14 04:19:36 +00:00
kern Improve the MP safeness associated with the creation of symbolic 2005-09-15 15:03:48 +00:00
libkern - Fix checking range of strings of struct iconv_add_in in libsmb and libkiconv, 2005-08-24 12:38:26 +00:00
modules Hook up the hptmv driver for amd64. 2005-09-08 03:29:18 +00:00
net Undo a tad little optimization to bpf_mtap() introduced in rev. 1.95 2005-09-14 16:37:05 +00:00
net80211 Properly set ic_curchan before calling back to device driver to do channel 2005-08-30 14:27:47 +00:00
netatalk Forward declare atalkdomain with static linkage, not extern, since 2005-09-11 16:04:56 +00:00
netatm Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
netgraph When message can't fit into socket receive buffer return ENOBUFS 2005-09-12 14:11:11 +00:00
netinet Do not ignore all other TCP options (eg. timestamp, window scaling) 2005-09-14 15:06:22 +00:00
netinet6 IPv6 was improperly defining its malloc type the same as IPv4 (M_IPMADDR, 2005-09-07 10:11:49 +00:00
netipsec Correct typo in a comment describing vshiftl(). 2005-06-02 23:56:10 +00:00
netipx Forward declaring static variables as extern is invalid ISO-C. Now that 2005-09-07 10:06:14 +00:00
netkey SADB_UPDATE did not return an error when key length is invalid. 2005-08-22 07:05:14 +00:00
netnatm Forward declaring static variables as extern is invalid ISO-C. Now that 2005-09-07 10:06:14 +00:00
netncp Change API of mb_copy_t in libmchain so that netsmb can handle 2005-07-29 13:22:37 +00:00
netsmb Merge the dev_clone and dev_clone_cred event handlers into a single 2005-08-08 19:55:32 +00:00
nfs Fixes for NFS crashes on architectures that require strict alignment. 2005-07-14 20:08:27 +00:00
nfs4client - We want if (mrep != NULL) not if (m_freem != NULL). m_freem will never 2005-04-25 05:11:19 +00:00
nfsclient FIx for a bug in the change that made nfs_timer() MPSAFE. We need to 2005-07-27 15:06:26 +00:00
nfsserver NFS write gathering defers execution of NFS server write requests to wait 2005-04-17 16:25:36 +00:00
opencrypto Fix bogus check. It was possible to panic the kernel by giving 0 length. 2005-08-18 11:58:03 +00:00
pc98 Add some defines for EPSON machines and use them. 2005-09-14 12:42:39 +00:00
pccard Change a directory layout for pc98. 2005-05-10 12:02:18 +00:00
pci Fixed "Memory modified after free" panic in rl_detach() due 2005-09-14 12:33:23 +00:00
posix4 Introduce MAC Framework and MAC Policy entry points to label and control 2005-05-04 10:39:15 +00:00
powerpc Fix boot-time hang/panic on G3 systems when modifying IBAT0 in 2005-09-10 21:03:10 +00:00
rpc - Don't call rpcclnt_realign() if we don't have any mbufs to realign. 2005-03-19 01:16:25 +00:00
security Insert a series of place-holder function pointers in mac_policy.h for 2005-08-08 16:09:33 +00:00
sparc64 Move the prototypes of db_md_set_watchpoint(), db_md_clr_watchpoint() 2005-09-10 03:01:25 +00:00
sys Retire unused dev_named() function. 2005-09-15 08:01:57 +00:00
tools Allow EVFILT_VNODE events to work on every filesystem type, not just 2005-06-09 20:20:31 +00:00
ufs Giant is no longer needed here. 2005-09-12 01:21:42 +00:00
vm Introduce a new lock for the purpose of synchronizing access to the 2005-09-09 06:03:08 +00:00
Makefile When building cscopnamefile, default architecture to ${MACHINE}, not i386. 2005-03-08 00:09:41 +00:00