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);