From 428d6a971cffaba40b0f8ea5f66c3a3e0c853e88 Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Tue, 18 Aug 2015 11:32:15 +0200 Subject: ipc: fix locking issues * ipc/ipc_port.h (struct ipc_port): Document locking exception. * ipc/ipc_port.c (ipc_port_destroy): Avoid accessing `port's fields without the lock. (ipc_port_alloc_special): Lock `port'. * ipc/mach_msg.c (mach_msg_trap): Avoid using `ipc_port_flag_protected_payload' on unlocked port. * ipc/ipc_kmsg.c (ipc_kmsg_copyout_header): Likewise. --- ipc/ipc_port.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'ipc/ipc_port.h') diff --git a/ipc/ipc_port.h b/ipc/ipc_port.h index ade6967..de43b42 100644 --- a/ipc/ipc_port.h +++ b/ipc/ipc_port.h @@ -82,6 +82,8 @@ struct ipc_port { ipc_port_timestamp_t timestamp; } data; + /* Note: For pagers (IKOT_PAGER), this field is protected by + vm_object_cache_lock. */ ipc_kobject_t ip_kobject; mach_port_mscount_t ip_mscount; -- cgit v1.2.3