]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/security/audit/audit_pipe.c
xnu-3789.41.3.tar.gz
[apple/xnu.git] / bsd / security / audit / audit_pipe.c
index 9f64bba8490ce476da65100aeb300f38f86fcb6d..f2efbbe089accb9c75ce9d767f7e2bd478a485c7 100644 (file)
@@ -571,7 +571,7 @@ audit_pipe_alloc(void)
 
        AUDIT_PIPE_LIST_WLOCK_ASSERT();
 
-       ap = malloc(sizeof(*ap), M_AUDIT_PIPE, M_NOWAIT | M_ZERO);
+       ap = malloc(sizeof(*ap), M_AUDIT_PIPE, M_WAITOK | M_ZERO);
        if (ap == NULL)
                return (NULL);
 
@@ -646,6 +646,7 @@ audit_pipe_free(struct audit_pipe *ap)
        audit_pipe_flush(ap);
        cv_destroy(&ap->ap_cv);
        AUDIT_PIPE_SX_LOCK_DESTROY(ap);
+       AUDIT_PIPE_UNLOCK(ap);
        AUDIT_PIPE_LOCK_DESTROY(ap);
 #ifndef  __APPLE__
        knlist_destroy(&ap->ap_selinfo.si_note);
@@ -1006,7 +1007,7 @@ audit_pipe_read(dev_t dev, struct uio *uio, __unused int flag)
 
                KASSERT(ape->ape_record_len > ap->ap_qoffset,
                    ("audit_pipe_read: record_len > qoffset (1)"));
-               toread = MIN(ape->ape_record_len - ap->ap_qoffset,
+               toread = MIN((int)(ape->ape_record_len - ap->ap_qoffset),
                    uio_resid(uio));
                AUDIT_PIPE_UNLOCK(ap);
                error = uiomove((char *)ape->ape_record + ap->ap_qoffset,