diff options
-rw-r--r-- | sys/kern/subr_disk.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/kern/subr_disk.c b/sys/kern/subr_disk.c index baf2cda..762658f 100644 --- a/sys/kern/subr_disk.c +++ b/sys/kern/subr_disk.c @@ -280,10 +280,11 @@ diskclose(dev_t dev, int fflag, int devtype, struct proc *p) error = 0; pdev = dkmodpart(dkmodslice(dev, WHOLE_DISK_SLICE), RAW_PART); dp = pdev->si_disk; + if (!dp) + return (ENXIO); dsclose(dev, devtype, dp->d_slice); - if (!dsisopen(dp->d_slice)) { + if (!dsisopen(dp->d_slice)) error = dp->d_devsw->d_close(dp->d_dev, fflag, devtype, p); - } return (error); } @@ -326,6 +327,8 @@ diskioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, struct proc *p) pdev = dkmodpart(dkmodslice(dev, WHOLE_DISK_SLICE), RAW_PART); dp = pdev->si_disk; + if (!dp) + return (ENXIO); error = dsioctl(dev, cmd, data, fflag, &dp->d_slice); if (error == ENOIOCTL) error = dp->d_devsw->d_ioctl(dev, cmd, data, fflag, p); |