diff options
author | phk <phk@FreeBSD.org> | 2005-01-14 21:05:35 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2005-01-14 21:05:35 +0000 |
commit | 6d1e88efa36384c3d2a311cb355690d7385ae2b7 (patch) | |
tree | 37818634620a65bfb39a40fcc610163f646897a5 | |
parent | 7c55d0e3383145745cc9a35fa152e6d6bcb6d416 (diff) | |
download | FreeBSD-src-6d1e88efa36384c3d2a311cb355690d7385ae2b7.zip FreeBSD-src-6d1e88efa36384c3d2a311cb355690d7385ae2b7.tar.gz |
CAM will sometimes remove a disk again even before it finished being
initialized. We already cancel the pending events but we need to not
dereference the geom pointer which never got set different from NULL.
-rw-r--r-- | sys/geom/geom_disk.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/geom/geom_disk.c b/sys/geom/geom_disk.c index 38f73d3..bddb1c9 100644 --- a/sys/geom/geom_disk.c +++ b/sys/geom/geom_disk.c @@ -365,8 +365,10 @@ g_disk_destroy(void *ptr, int flag) g_topology_assert(); dp = ptr; gp = dp->d_geom; - gp->softc = NULL; - g_wither_geom(gp, ENXIO); + if (gp != NULL) { + gp->softc = NULL; + g_wither_geom(gp, ENXIO); + } g_free(dp); } |