summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/vfs_subr.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 8d2e07e..345aad6 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -3775,17 +3775,20 @@ vn_isdisk(struct vnode *vp, int *errp)
{
int error;
+ if (vp->v_type != VCHR) {
+ error = ENOTBLK;
+ goto out;
+ }
error = 0;
dev_lock();
- if (vp->v_type != VCHR)
- error = ENOTBLK;
- else if (vp->v_rdev == NULL)
+ if (vp->v_rdev == NULL)
error = ENXIO;
else if (vp->v_rdev->si_devsw == NULL)
error = ENXIO;
else if (!(vp->v_rdev->si_devsw->d_flags & D_DISK))
error = ENOTBLK;
dev_unlock();
+out:
if (errp != NULL)
*errp = error;
return (error == 0);
OpenPOWER on IntegriCloud