From 7ebb1f16a1ce41244a0a095e1e5fd128b321a360 Mon Sep 17 00:00:00 2001 From: sos Date: Tue, 13 Mar 2001 08:45:05 +0000 Subject: [PATCH] Dont call device close and ioctl functions if device has disappeared. Reviewed by: phk --- sys/kern/subr_disk.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_disk.c b/sys/kern/subr_disk.c index baf2cdaecd7..762658ff57c 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); -- 2.45.2