From d4414b3959fd289aaffcf0e10227b5860a0bb254 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Wed, 1 May 2013 18:31:13 +0200 Subject: devloopback: fix potential channel leak on allocation error (from eriks 9atom) --- sys/src/9/port/devloopback.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sys/src/9/port/devloopback.c b/sys/src/9/port/devloopback.c index d3a64932b..cc51a1bf3 100644 --- a/sys/src/9/port/devloopback.c +++ b/sys/src/9/port/devloopback.c @@ -131,8 +131,12 @@ loopbackattach(char *spec) } c = devattach('X', spec); - lb = &loopbacks[dev]; + if(waserror()){ + chanfree(c); + nexterror(); + } + lb = &loopbacks[dev]; qlock(lb); if(waserror()){ lb->ref--; @@ -168,6 +172,8 @@ loopbackattach(char *spec) poperror(); qunlock(lb); + poperror(); + mkqid(&c->qid, QID(0, Qtopdir), 0, QTDIR); c->aux = lb; c->dev = dev; -- cgit v1.2.3