]> Zhao Yanbai Git Server - minix.git/commit
IPC privileges fixes
authorDavid van Moolenbroek <david@minix3.org>
Thu, 2 Jul 2009 16:25:31 +0000 (16:25 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Thu, 2 Jul 2009 16:25:31 +0000 (16:25 +0000)
commitb8b8f537bdfd55181dcf910d048c3d1db29901de
treeeeec814bd1a56f4d7c97f7e884b9e5d6afecd665
parentaa84986819eebbfb8020156afd3ac42733a33922
IPC privileges fixes

Kernel:
o Remove s_ipc_sendrec, instead using s_ipc_to for all send primitives
o Centralize s_ipc_to bit manipulation,
  - disallowing assignment of bits pointing to unused priv structs;
  - preventing send-to-self by not setting bit for own priv struct;
  - preserving send mask matrix symmetry in all cases
o Add IPC send mask checks to SENDA, which were missing entirely somehow
o Slightly improve IPC stats accounting for SENDA
o Remove SYSTEM from user processes' send mask
o Half-fix the dependency between boot image order and process numbers,
  - correcting the table order of the boot processes;
  - documenting the order requirement needed for proper send masks;
  - warning at boot time if the order is violated

RS:
o Add support in /etc/drivers.conf for servers that talk to user processes,
  - disallowing IPC to user processes if no "ipc" field is present
  - adding a special "USER" label to explicitly allow IPC to user processes
o Always apply IPC masks when specified; remove -i flag from service(8)
o Use kernel send mask symmetry to delay adding IPC permissions for labels
  that do not exist yet, adding them to that label's process upon creation
o Add VM to ipc permissions list for rtl8139 and fxp in drivers.conf

Left to future fixes:
o Removal of the table order vs process numbers dependency altogether,
  possibly using per-process send list structures as used for SYSTEM calls
o Proper assignment of send masks to boot processes;
  some of the assigned (~0) masks are much wider than necessary
o Proper assignment of IPC send masks for many more servers in drivers.conf
o Removal of the debugging warning about the now legitimate case where RS's
  add_forward_ipc cannot find the IPC destination's label yet
13 files changed:
commands/swifi/run_t1
etc/drivers.conf
kernel/main.c
kernel/priv.h
kernel/proc.c
kernel/proto.h
kernel/system.c
kernel/system/do_privctl.c
kernel/table.c
servers/is/dmp_kernel.c
servers/rs/manager.c
servers/rs/service.c
tools/Makefile