summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_disk.c
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2001-03-13 08:45:05 +0000
committersos <sos@FreeBSD.org>2001-03-13 08:45:05 +0000
commit7ebb1f16a1ce41244a0a095e1e5fd128b321a360 (patch)
tree9504b53d11a707e5cdd983212a208c6f05443ecb /sys/kern/subr_disk.c
parentbfe1c25ad9a03e21fb39ed8ea3468fc04d381f0a (diff)
downloadFreeBSD-src-7ebb1f16a1ce41244a0a095e1e5fd128b321a360.zip
FreeBSD-src-7ebb1f16a1ce41244a0a095e1e5fd128b321a360.tar.gz
Dont call device close and ioctl functions if device has disappeared.
Reviewed by: phk
Diffstat (limited to 'sys/kern/subr_disk.c')
-rw-r--r--sys/kern/subr_disk.c7
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);
OpenPOWER on IntegriCloud