From 2defc38ea2ceefde66974f1b2cedd50341efe6c7 Mon Sep 17 00:00:00 2001 From: Filippos Giannakos Date: Wed, 26 Sep 2012 19:22:24 +0300 Subject: [PATCH] fix race condition in signal in kernel posix driver --- xseg/drivers/kernel/xseg_posix.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xseg/drivers/kernel/xseg_posix.c b/xseg/drivers/kernel/xseg_posix.c index 9766ecb..e35dd89 100644 --- a/xseg/drivers/kernel/xseg_posix.c +++ b/xseg/drivers/kernel/xseg_posix.c @@ -74,12 +74,13 @@ static int posix_signal(struct xseg *xseg, uint32_t portno) rcu_read_lock(); /* XXX Security: xseg peers can kill anyone */ - if (!port->waitcue) { + pid_t p = *(volatile unsigned uint64_t *)&port->waitcue; + if (!p) { ret = 0; goto out; } - pid = find_vpid((pid_t)port->waitcue); + pid = find_vpid((p); if (!pid) goto out; task = pid_task(pid, PIDTYPE_PID); -- 1.7.10.4