From 75a0bc8f2781e2db90d2455da613aeae97317ef9 Mon Sep 17 00:00:00 2001 From: marco Date: Thu, 12 Jun 2008 21:29:02 +0000 Subject: Clead discipline pointer after delete. Found by hshoexer --- sys/dev/softraid.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'sys/dev/softraid.c') diff --git a/sys/dev/softraid.c b/sys/dev/softraid.c index 6015ffe3fc0..7b48e480fb4 100644 --- a/sys/dev/softraid.c +++ b/sys/dev/softraid.c @@ -1,4 +1,4 @@ -/* $OpenBSD: softraid.c,v 1.110 2008/06/12 18:13:27 hshoexer Exp $ */ +/* $OpenBSD: softraid.c,v 1.111 2008/06/12 21:29:02 marco Exp $ */ /* * Copyright (c) 2007 Marco Peereboom * Copyright (c) 2008 Chris Kuethe @@ -1410,9 +1410,9 @@ sr_unwind_chunks(struct sr_softc *sc, struct sr_chunk_head *cl) void sr_free_discipline(struct sr_discipline *sd) { -#ifdef SR_DEBUG struct sr_softc *sc = sd->sd_sc; -#endif + int i; + if (!sd) return; @@ -1424,6 +1424,12 @@ sr_free_discipline(struct sr_discipline *sd) if (sd->sd_vol.sv_chunks) free(sd->sd_vol.sv_chunks, M_DEVBUF); free(sd, M_DEVBUF); + + for (i = 0; i < SR_MAXSCSIBUS; i++) + if (sc->sc_dis[i] == sd) { + sc->sc_dis[i] = NULL; + break; + } } void -- cgit v1.2.3-59-g8ed1b