]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/atm/atm.c
xnu-3789.70.16.tar.gz
[apple/xnu.git] / osfmk / atm / atm.c
index 707a5be66e830fcd5e39dd46714b8a6fbfe3837d..073aa37c240d7e4b07ced53189f421295139ecd5 100644 (file)
@@ -731,9 +731,14 @@ atm_send_user_notification(
        /* Make sure that honor queue limit option is unset on the thread. */
        th->options &= (~TH_OPT_HONOR_QLIMIT);
 
-       if (kr == MACH_SEND_TIMED_OUT) {
-               kr = KERN_SUCCESS;
+       if (kr != KERN_SUCCESS) {
+               ipc_port_release_send(user_port);
+
+               if (kr == MACH_SEND_TIMED_OUT) {
+                       kr = KERN_SUCCESS;
+               }
        }
+
        return kr;
 }
 
@@ -794,8 +799,12 @@ atm_send_proc_inspect_notification(
        /* Make sure that honor queue limit option is unset on the thread. */
        th->options &= (~TH_OPT_HONOR_QLIMIT);
 
-       if (kr == MACH_SEND_TIMED_OUT) {
-               kr = KERN_SUCCESS;
+       if (kr != KERN_SUCCESS) {
+               ipc_port_release_send(user_port);
+
+               if (kr == MACH_SEND_TIMED_OUT) {
+                       kr = KERN_SUCCESS;
+               }
        }
 
        ipc_port_release_send(memory_port);