]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/ipc/mach_port.c
xnu-3789.70.16.tar.gz
[apple/xnu.git] / osfmk / ipc / mach_port.c
index d15991ebf504bb8f54d031af665cc39d1a3c6f77..851a6a1ee95ddca247a44507821b982c73c1b735 100644 (file)
@@ -1550,6 +1550,12 @@ mach_port_request_notification(
                        return kr;
                /* port is locked and active */
 
+               /* you cannot register for port death notifications on a kobject */
+               if (ip_kotype(port) != IKOT_NONE) {
+                       ip_unlock(port);
+                       return KERN_INVALID_RIGHT;
+               }
+
                ipc_port_pdrequest(port, notify, &previous);
                /* port is unlocked */
 
@@ -1713,9 +1719,6 @@ void mach_port_get_status_helper(
        ipc_port_t              port,
        mach_port_status_t      *statusp)
 {
-       spl_t s;
-
-       s = splsched();
        imq_lock(&port->ip_messages);
        /* don't leak set IDs, just indicate that the port is in one or not */
        statusp->mps_pset = !!(port->ip_in_pset);
@@ -1723,8 +1726,7 @@ void mach_port_get_status_helper(
        statusp->mps_qlimit = port->ip_messages.imq_qlimit;
        statusp->mps_msgcount = port->ip_messages.imq_msgcount;
        imq_unlock(&port->ip_messages);
-       splx(s);
-       
+
        statusp->mps_mscount = port->ip_mscount;
        statusp->mps_sorights = port->ip_sorights;
        statusp->mps_srights = port->ip_srights > 0;