devloopback: fix potential channel leak on allocation error (from eriks 9atom)
This commit is contained in:
parent
58533c35fb
commit
d4414b3959
1 changed files with 7 additions and 1 deletions
|
@ -131,8 +131,12 @@ loopbackattach(char *spec)
|
||||||
}
|
}
|
||||||
|
|
||||||
c = devattach('X', spec);
|
c = devattach('X', spec);
|
||||||
lb = &loopbacks[dev];
|
if(waserror()){
|
||||||
|
chanfree(c);
|
||||||
|
nexterror();
|
||||||
|
}
|
||||||
|
|
||||||
|
lb = &loopbacks[dev];
|
||||||
qlock(lb);
|
qlock(lb);
|
||||||
if(waserror()){
|
if(waserror()){
|
||||||
lb->ref--;
|
lb->ref--;
|
||||||
|
@ -168,6 +172,8 @@ loopbackattach(char *spec)
|
||||||
poperror();
|
poperror();
|
||||||
qunlock(lb);
|
qunlock(lb);
|
||||||
|
|
||||||
|
poperror();
|
||||||
|
|
||||||
mkqid(&c->qid, QID(0, Qtopdir), 0, QTDIR);
|
mkqid(&c->qid, QID(0, Qtopdir), 0, QTDIR);
|
||||||
c->aux = lb;
|
c->aux = lb;
|
||||||
c->dev = dev;
|
c->dev = dev;
|
||||||
|
|
Loading…
Reference in a new issue