Module Name: src Committed By: christos Date: Thu Mar 3 03:39:08 UTC 2011
Modified Files: src/sys/dev/dkwedge: dk.c Log Message: check rawvp before doing ioctl or strategy. To generate a diff of this commit: cvs rdiff -u -r1.59 -r1.60 src/sys/dev/dkwedge/dk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/dkwedge/dk.c diff -u src/sys/dev/dkwedge/dk.c:1.59 src/sys/dev/dkwedge/dk.c:1.60 --- src/sys/dev/dkwedge/dk.c:1.59 Mon Feb 28 13:28:20 2011 +++ src/sys/dev/dkwedge/dk.c Wed Mar 2 22:39:08 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: dk.c,v 1.59 2011/02/28 18:28:20 christos Exp $ */ +/* $NetBSD: dk.c,v 1.60 2011/03/03 03:39:08 christos Exp $ */ /*- * Copyright (c) 2004, 2005, 2006, 2007 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dk.c,v 1.59 2011/02/28 18:28:20 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dk.c,v 1.60 2011/03/03 03:39:08 christos Exp $"); #ifdef _KERNEL_OPT #include "opt_dkwedge.h" @@ -1115,7 +1115,9 @@ bp->b_error = ENODEV; goto done; } - if (sc->sc_state != DKW_STATE_RUNNING) { + + if (sc->sc_state != DKW_STATE_RUNNING || + sc->sc_parent->dk_rawvp == NULL) { bp->b_error = ENXIO; goto done; } @@ -1330,6 +1332,8 @@ return (ENODEV); if (sc->sc_state != DKW_STATE_RUNNING) return (ENXIO); + if (sc->sc_parent->dk_rawvp == NULL) + return (ENXIO); error = disk_ioctl(&sc->sc_dk, cmd, data, flag, l); if (error != EPASSTHROUGH)