ref: a943170d0240b3d28e9b88a13670bfec8095a905
parent: fede6eb121103b5ce8440d56ce870316a5b2ee8f
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Nov 12 16:49:07 EST 2023
devuart: fix wrong opens count in case of uartenable() error
--- a/sys/src/9/port/devuart.c
+++ b/sys/src/9/port/devuart.c
@@ -143,10 +143,11 @@
p = uartport(which);
qlock(p);
- if(p->opens++ == 0 && uartenable(p) == nil){
+ if(p->opens == 0 && uartenable(p) == nil){
qunlock(p);
error(Enodev);
}
+ p->opens++;
if(setb1200)
uartctl(p, "b1200");
p->putc = putc;
@@ -321,11 +322,12 @@
case Ndataqid:
p = uart[NETID(c->qid.path)];
qlock(p);
- if(p->opens++ == 0 && uartenable(p) == nil){
+ if(p->opens == 0 && uartenable(p) == nil){
qunlock(p);
c->flag &= ~COPEN;
error(Enodev);
}
+ p->opens++;
qunlock(p);
break;
}
--
⑨