M port/devsd.c => port/devsd.c +4 -4
@@ 276,10 276,6 @@ sdgetunit(SDev* sdev, int subno)
}
sdev->unitflg[subno] = 1;
- if(sdev->enabled == 0 && sdev->ifc->enable)
- sdev->ifc->enable(sdev);
- sdev->enabled = 1;
-
snprint(buf, sizeof(buf), "%s%d", sdev->name, subno);
kstrdup(&unit->name, buf);
kstrdup(&unit->user, eve);
@@ 287,6 283,10 @@ sdgetunit(SDev* sdev, int subno)
unit->subno = subno;
unit->dev = sdev;
+ if(sdev->enabled == 0 && sdev->ifc->enable)
+ sdev->ifc->enable(sdev);
+ sdev->enabled = 1;
+
/*
* No need to lock anything here as this is only
* called before the unit is made available in the
M port/page.c => port/page.c +1 -0
@@ 176,6 176,7 @@ newpage(int clear, Segment **s, ulong va)
}
pageunchain(p);
+
lock(p);
if(p->ref != 0)
panic("newpage");