]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netat/adsp_CLListen.c
xnu-792.21.3.tar.gz
[apple/xnu.git] / bsd / netat / adsp_CLListen.c
index 949b70e81af9f0936b2fc3a70a0a31cf7aecd0ef..69dbe7229ca840ecc5cff00f6ff1741345a8dd15 100644 (file)
@@ -75,6 +75,7 @@ int adspCLListen(sp, pb)      /* (DSPPBPtr pb) */
 {
     register struct adspcmd *clpb;
     gbuf_t *mp;
+    int s;
 
     if (sp == 0) {
        pb->ioResult = errRefNum;
@@ -92,8 +93,12 @@ int adspCLListen(sp, pb)     /* (DSPPBPtr pb) */
            clpb = (struct adspcmd *)gbuf_rptr(mp);
            clpb->ioc = 0;
            clpb->mp = mp;
-           if (qAddToEnd(&sp->opb, clpb))      /* Add to list of listeners */
-                       return EFAULT; /* bogus, but discriminate from other errors */
+           ATDISABLE(s, sp->lock);
+           if (qAddToEnd(&sp->opb, clpb)){     /* Add to list of listeners */
+            ATENABLE(s, sp->lock);
+               return EFAULT; /* bogus, but discriminate from other errors */
+           }
+           ATENABLE(s, sp->lock);
     } else {
            pb->ioResult = errDSPQueueSize;
            return ENOBUFS;