svn commit: r336310 - head/sys/geom/eli

Mariusz Zaborski oshogbo at FreeBSD.org
Sun Jul 15 18:03:21 UTC 2018


Author: oshogbo
Date: Sun Jul 15 18:03:19 2018
New Revision: 336310
URL: https://svnweb.freebsd.org/changeset/base/336310

Log:
  Let geli deal with lost devices without crashing.
  
  PR:		162036
  Submitted by:	Fabian Keil <fk at fabiankeil.de>
  Obtained from:	ElectroBSD
  Discussed with: pjd@

Modified:
  head/sys/geom/eli/g_eli.c
  head/sys/geom/eli/g_eli_privacy.c

Modified: head/sys/geom/eli/g_eli.c
==============================================================================
--- head/sys/geom/eli/g_eli.c	Sun Jul 15 18:02:50 2018	(r336309)
+++ head/sys/geom/eli/g_eli.c	Sun Jul 15 18:03:19 2018	(r336310)
@@ -254,7 +254,8 @@ g_eli_read_done(struct bio *bp)
 			pbp->bio_driver2 = NULL;
 		}
 		g_io_deliver(pbp, pbp->bio_error);
-		atomic_subtract_int(&sc->sc_inflight, 1);
+		if (sc != NULL)
+			atomic_subtract_int(&sc->sc_inflight, 1);
 		return;
 	}
 	mtx_lock(&sc->sc_queue_mtx);
@@ -299,7 +300,8 @@ g_eli_write_done(struct bio *bp)
 	 */
 	sc = pbp->bio_to->geom->softc;
 	g_io_deliver(pbp, pbp->bio_error);
-	atomic_subtract_int(&sc->sc_inflight, 1);
+	if (sc != NULL)
+		atomic_subtract_int(&sc->sc_inflight, 1);
 }
 
 /*

Modified: head/sys/geom/eli/g_eli_privacy.c
==============================================================================
--- head/sys/geom/eli/g_eli_privacy.c	Sun Jul 15 18:02:50 2018	(r336309)
+++ head/sys/geom/eli/g_eli_privacy.c	Sun Jul 15 18:03:19 2018	(r336310)
@@ -89,7 +89,8 @@ g_eli_crypto_read_done(struct cryptop *crp)
 			bp->bio_error = crp->crp_etype;
 	}
 	sc = bp->bio_to->geom->softc;
-	g_eli_key_drop(sc, crp->crp_desc->crd_key);
+	if (sc != NULL)
+		g_eli_key_drop(sc, crp->crp_desc->crd_key);
 	/*
 	 * Do we have all sectors already?
 	 */
@@ -106,7 +107,8 @@ g_eli_crypto_read_done(struct cryptop *crp)
 	 * Read is finished, send it up.
 	 */
 	g_io_deliver(bp, bp->bio_error);
-	atomic_subtract_int(&sc->sc_inflight, 1);
+	if (sc != NULL)
+		atomic_subtract_int(&sc->sc_inflight, 1);
 	return (0);
 }
 


More information about the svn-src-head mailing list