DragonFlyBSD Kernel Audit
DF-1653 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/netif/sbsh/if_sbsh.c
+++ b/sys/dev/netif/sbsh/if_sbsh.c
@@ -1042,8 +1042,13 @@
 	if (tsleep(sc, 0, "sbsh", hz << 3))
 		return (-1);
 
-	while (p->out_ack == _ACK_NOT_COMPLETE)
-		;					/* FIXME ! */
+	{
+		int to = hz * 2;
+		while (p->out_ack == _ACK_NOT_COMPLETE && --to > 0)
+			DELAY(1000);
+		if (p->out_ack == _ACK_NOT_COMPLETE)
+			return (-1);
+	}
 
 	if ((p->out_ack & 0x1f) == _ACK_PASS) {
 		p->out_ack = 0;