HomeFreeBSD

Improve locking of pipe mutexes in the context of MAC:

Description

Improve locking of pipe mutexes in the context of MAC:

(1) Where previously the pipe mutex was selectively grabbed during

pipe_ioctl(), now always grab it and then release if if not
needed.  This protects the call to mac_check_pipe_ioctl() to
make sure the label remains consistent.  (Note: it looks
like sigio locking may be incorrect for fgetown() since we
call it not-by-reference and sigio locking assumes call by
reference).

(2) In pipe_stat(), lock the pipe if MAC is compiled in so that

the call to mac_check_pipe_stat() gets a locked pipe to
protect label consistency.  We still release the lock before
returning actual stat() data, risking inconsistency, but
apparently our pipe locking model accepts that risk.

(3) In various pipe MAC authorization checks, assert that the pipe

lock is held.

(4) Grab the lock when performing a pipe relabel operation, and

assert it a little deeper in the stack.

Obtained from: TrustedBSD Project
Sponsored by: DARPA, Network Associates Laboratories

Details

Provenance
rwatsonAuthored on Oct 1 2002, 4:30 AM
Parents
rG6be0c25e4e60: Push 'security.mac.debug_label_fallback' behind options MAC_DEBUG.
Branches
Unknown
Tags
Unknown

Event Timeline