* 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;
d = nil;
if(waserror()){
- free(d);
qunlock(&unit->ctl);
if(sdev != nil)
decref(&sdev->r);
+ free(d);
nexterror();
}
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;
}