Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Feb 2018 23:23:27 +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: r329479 - head/sys/dev/usb/controller
Message-ID:  <201802172323.w1HNNRtE031045@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ian
Date: Sat Feb 17 23:23:27 2018
New Revision: 329479
URL: https://svnweb.freebsd.org/changeset/base/329479

Log:
  Do not try to deallocate memory that wasn't allocated (you'd think that
  would be safe, but the function also tries to destroy mutexes that never
  got created).
  
  I guess this can only happen when imx_ehci_detach() is called on the
  error-exit path from imx_ehci_attach(), and that path never got exercised
  before today.

Modified:
  head/sys/dev/usb/controller/ehci_imx.c

Modified: head/sys/dev/usb/controller/ehci_imx.c
==============================================================================
--- head/sys/dev/usb/controller/ehci_imx.c	Sat Feb 17 23:05:19 2018	(r329478)
+++ head/sys/dev/usb/controller/ehci_imx.c	Sat Feb 17 23:23:27 2018	(r329479)
@@ -268,6 +268,7 @@ struct imx_ehci_softc {
 	device_t	dev;
 	struct resource	*ehci_mem_res;	/* EHCI core regs. */
 	struct resource	*ehci_irq_res;	/* EHCI core IRQ. */ 
+	bool		usb_mem_allocated;
 };
 
 static struct ofw_compat_data compat_data[] = {
@@ -331,7 +332,8 @@ imx_ehci_detach(device_t dev)
 		bus_release_resource(dev, SYS_RES_MEMORY, 0,
 		    sc->ehci_mem_res);
 
-	usb_bus_mem_free_all(&esc->sc_bus, &ehci_iterate_hw_softc);
+	if (sc->usb_mem_allocated)
+		usb_bus_mem_free_all(&esc->sc_bus, &ehci_iterate_hw_softc);
 
 	/* During module unload there are lots of children leftover */
 	device_delete_children(dev);
@@ -413,6 +415,7 @@ imx_ehci_attach(device_t dev)
 		err = ENOMEM;
 		goto out;
 	}
+	sc->usb_mem_allocated = true;
 
 	/*
 	 * Set handle to USB related registers subregion used by



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