]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/9/port/devshr.c
devshr: unmount service on #σc/share/mount removal
[plan9front.git] / sys / src / 9 / port / devshr.c
index bc76772104171511729bd65108493754def9fb72..96e319221d50be67bcd6a5329a8eb671f416b9c0 100644 (file)
@@ -554,6 +554,7 @@ shrremove(Chan *c)
        Sch *sch;
        Mpt *mpt;
        Mhead *h;
+       Chan *bc;
 
        sch = tosch(c);
        if(waserror()){
@@ -593,6 +594,7 @@ shrremove(Chan *c)
                qunlock(&shrslk);
                break;
        case Qcmpt:
+               bc = nil;
                mpt = sch->mpt;
                m = &mpt->m;
                h = &shr->umh;
@@ -601,10 +603,14 @@ shrremove(Chan *c)
                        if(*ml == m){
                                *ml = m->next;
                                m->next = nil;
+                               bc = m->to;
+                               m->to = nil;
                                putmpt(mpt);
                                break;
                        }
                wunlock(&h->lock);
+               if(bc != nil)
+                       cclose(bc);
                break;
        }
        poperror();