devloopback: fix potential channel leak on allocation error (from eriks 9atom)

This commit is contained in:
cinap_lenrek 2013-05-01 18:31:13 +02:00
parent 58533c35fb
commit d4414b3959

View file

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