Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Dec 2019 02:20:26 +0000 (UTC)
From:      Ian Lepore <ian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r355688 - head/sys/dev/iicbus
Message-ID:  <201912130220.xBD2KQ30047086@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ian
Date: Fri Dec 13 02:20:26 2019
New Revision: 355688
URL: https://svnweb.freebsd.org/changeset/base/355688

Log:
  If device_delete_children() returns an error, bail on the rest of the
  detach work and return the error.  Especially don't call iicbus_reset()
  since the most likely cause of failing to detach children is that one
  of them has IO in progress.

Modified:
  head/sys/dev/iicbus/iicbus.c

Modified: head/sys/dev/iicbus/iicbus.c
==============================================================================
--- head/sys/dev/iicbus/iicbus.c	Fri Dec 13 02:18:44 2019	(r355687)
+++ head/sys/dev/iicbus/iicbus.c	Fri Dec 13 02:20:26 2019	(r355688)
@@ -134,10 +134,11 @@ static int
 iicbus_detach(device_t dev)
 {
 	struct iicbus_softc *sc = IICBUS_SOFTC(dev);
+	int err;
 
+	if ((err = device_delete_children(dev)) != 0)
+		return (err);
 	iicbus_reset(dev, IIC_FASTEST, 0, NULL);
-	bus_generic_detach(dev);
-	device_delete_children(dev);
 	mtx_destroy(&sc->lock);
 	return (0);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912130220.xBD2KQ30047086>