DragonFlyBSD Kernel Audit
DF-2751 / fix.diff
← back to finding ↓ download raw
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -1243,12 +1243,12 @@ funsetown(struct sigio **sigiop)
 	struct pgrp *pgrp;
 	struct proc *p;
 	struct sigio *sigio;
 
-	if ((sigio = *sigiop) != NULL) {
-		lwkt_gettoken(&sigio_token);	/* protect sigio */
+	sigio = NULL;
+	lwkt_gettoken(&sigio_token);	/* protect sigio */
+	if ((sigio = *sigiop) != NULL) {
 		KKASSERT(sigiop == sigio->sio_myref);
-		sigio = *sigiop;
 		*sigiop = NULL;
-		lwkt_reltoken(&sigio_token);
 	}
+	lwkt_reltoken(&sigio_token);
 	if (sigio == NULL)
 		return;