]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/9/port/devsd.c
devproc: make sure /proc/n/wait waits for the right process children
[plan9front.git] / sys / src / 9 / port / devsd.c
index 5cc44b31c7a667652533f1bad14b5f7e06d56370..6474a68f096aa488c029f26142ad292d6a77a89c 100644 (file)
@@ -1072,7 +1072,9 @@ sdfakescsi(SDreq *r)
                 * Read capacity returns the LBA of the last sector.
                 */
                len = unit->sectors;
-               if(len > 0)
+               if(len >= 0xffffffff)
+                       len = 0xffffffff;
+               else if(len > 0)
                        len--;
                p = r->data;
                *p++ = len>>24;
@@ -1558,10 +1560,10 @@ sdwstat(Chan* c, uchar* dp, int n)
 
        d = nil;
        if(waserror()){
-               free(d);
                qunlock(&unit->ctl);
                if(sdev != nil)
                        decref(&sdev->r);
+               free(d);
                nexterror();
        }
 
@@ -1600,13 +1602,11 @@ sdwstat(Chan* c, uchar* dp, int n)
                error(Eperm);
        if(d[0].mode != ~0UL)
                perm->perm = (perm->perm & ~0777) | (d[0].mode & 0777);
-
-       free(d);
-       d = nil; USED(d);
+       poperror();
        qunlock(&unit->ctl);
        if(sdev != nil)
                decref(&sdev->r);
-       poperror();
+       free(d);
        return n;
 }