shithub: riscv

Download patch

ref: 05d3cc414dbf9657a394738fd5b7cea36f08c8ca
parent: 44c32071dc8fcf50326b39a25c4ec3e68b458115
author: cinap_lenrek <[email protected]>
date: Mon Apr 22 14:50:29 EDT 2013

ether8169: fix deadlock in allocation error case for attach. (thanks erik)

typo in error case, should qunlock() instead of qlock().

--- a/sys/src/9/pc/ether8169.c
+++ b/sys/src/9/pc/ether8169.c
@@ -765,11 +765,13 @@
 			ctlr->rd = nil;
 			free(ctlr->dtcc);
 			ctlr->dtcc = nil;
-			qlock(&ctlr->alock);
+			qunlock(&ctlr->alock);
 			error(Enomem);
 		}
 		ctlr->init = 1;
 		kproc("rtl8169", rtl8169reseter, edev);
+
+		/* rtl8169reseter() does qunlock(&ctlr->alock) when complete */
 		qlock(&ctlr->alock);
 	}
 	qunlock(&ctlr->alock);