fix the way drivers get xseg port
authorFilippos Giannakos <philipgian@grnet.gr>
Thu, 30 Aug 2012 09:23:27 +0000 (12:23 +0300)
committerFilippos Giannakos <philipgian@grnet.gr>
Thu, 30 Aug 2012 09:23:58 +0000 (12:23 +0300)
xseg/drivers/kernel/xseg_posix.c
xseg/drivers/user/xseg_posix.c

index 03d1278..2369355 100644 (file)
@@ -55,9 +55,12 @@ static int posix_wait_signal(struct xseg *xseg, uint32_t timeout)
 static int posix_signal(struct xseg *xseg, uint32_t portno)
 {
        struct pid *pid;
-       struct xseg_port *port = &xseg->ports[portno];
        struct task_struct *task;
        int ret = -ENOENT;
+       struct xseg_port *port = xseg_get_port(xseg, portno);
+       if (!port) 
+               return -1;
+
 
        rcu_read_lock();
        /* XXX Security: xseg peers can kill anyone */
index f5075fe..6066266 100644 (file)
@@ -128,14 +128,18 @@ static void posix_signal_quit(void)
 
 static int posix_prepare_wait(struct xseg *xseg, uint32_t portno)
 {
-       struct xseg_port *port = &xseg->ports[portno];
+       struct xseg_port *port = xseg_get_port(xseg, portno);
+       if (!port) 
+               return -1;
        port->waitcue = pid;
        return 0;
 }
 
 static int posix_cancel_wait(struct xseg *xseg, uint32_t portno)
 {
-       struct xseg_port *port = &xseg->ports[portno];
+       struct xseg_port *port = xseg_get_port(xseg, portno);
+       if (!port) 
+               return -1;
        port->waitcue = 0;
        return 0;
 }
@@ -161,7 +165,9 @@ static int posix_wait_signal(struct xseg *xseg, uint32_t usec_timeout)
 
 static int posix_signal(struct xseg *xseg, uint32_t portno)
 {
-       struct xseg_port *port = &xseg->ports[portno];
+       struct xseg_port *port = xseg_get_port(xseg, portno);
+       if (!port) 
+               return -1;
        pid_t cue = (pid_t)port->waitcue;
        if (!cue)
                return 0;