Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F112545429
D47387.id146022.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
11 KB
Referenced Files
None
Subscribers
None
D47387.id146022.diff
View Options
diff --git a/sys/arm/nvidia/as3722.c b/sys/arm/nvidia/as3722.c
--- a/sys/arm/nvidia/as3722.c
+++ b/sys/arm/nvidia/as3722.c
@@ -343,6 +343,11 @@
as3722_detach(device_t dev)
{
struct as3722_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
if (sc->irq_h != NULL)
@@ -351,7 +356,7 @@
bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq_res);
LOCK_DESTROY(sc);
- return (bus_generic_detach(dev));
+ return (0);
}
static phandle_t
diff --git a/sys/arm/nvidia/drm2/tegra_dc.c b/sys/arm/nvidia/drm2/tegra_dc.c
--- a/sys/arm/nvidia/drm2/tegra_dc.c
+++ b/sys/arm/nvidia/drm2/tegra_dc.c
@@ -1393,6 +1393,11 @@
dc_detach(device_t dev)
{
struct dc_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
@@ -1412,7 +1417,7 @@
bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->mem_res);
LOCK_DESTROY(sc);
- return (bus_generic_detach(dev));
+ return (0);
}
static device_method_t tegra_dc_methods[] = {
diff --git a/sys/arm/nvidia/drm2/tegra_hdmi.c b/sys/arm/nvidia/drm2/tegra_hdmi.c
--- a/sys/arm/nvidia/drm2/tegra_hdmi.c
+++ b/sys/arm/nvidia/drm2/tegra_hdmi.c
@@ -1272,6 +1272,12 @@
hdmi_detach(device_t dev)
{
struct hdmi_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
+
sc = device_get_softc(dev);
TEGRA_DRM_DEREGISTER_CLIENT(device_get_parent(sc->dev), sc->dev);
@@ -1294,7 +1300,7 @@
bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq_res);
if (sc->mem_res != NULL)
bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->mem_res);
- return (bus_generic_detach(dev));
+ return (0);
}
static device_method_t tegra_hdmi_methods[] = {
diff --git a/sys/arm/nvidia/drm2/tegra_host1x.c b/sys/arm/nvidia/drm2/tegra_host1x.c
--- a/sys/arm/nvidia/drm2/tegra_host1x.c
+++ b/sys/arm/nvidia/drm2/tegra_host1x.c
@@ -586,6 +586,11 @@
host1x_detach(device_t dev)
{
struct host1x_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
@@ -608,7 +613,7 @@
if (sc->mem_res != NULL)
bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->mem_res);
LOCK_DESTROY(sc);
- return (bus_generic_detach(dev));
+ return (0);
}
static device_method_t host1x_methods[] = {
diff --git a/sys/arm/nvidia/tegra_abpmisc.c b/sys/arm/nvidia/tegra_abpmisc.c
--- a/sys/arm/nvidia/tegra_abpmisc.c
+++ b/sys/arm/nvidia/tegra_abpmisc.c
@@ -166,13 +166,18 @@
tegra_abpmisc_detach(device_t dev)
{
struct tegra_abpmisc_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
if (sc->abp_misc_res != NULL)
bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->abp_misc_res);
if (sc->strap_opt_res != NULL)
bus_release_resource(dev, SYS_RES_MEMORY, 1, sc->strap_opt_res);
- return (bus_generic_detach(dev));
+ return (0);
}
static device_method_t tegra_abpmisc_methods[] = {
diff --git a/sys/arm/nvidia/tegra_efuse.c b/sys/arm/nvidia/tegra_efuse.c
--- a/sys/arm/nvidia/tegra_efuse.c
+++ b/sys/arm/nvidia/tegra_efuse.c
@@ -499,6 +499,11 @@
tegra_efuse_detach(device_t dev)
{
struct tegra_efuse_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
dev_sc = NULL;
@@ -509,7 +514,7 @@
if (sc->mem_res != NULL)
bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->mem_res);
- return (bus_generic_detach(dev));
+ return (0);
}
static device_method_t tegra_efuse_methods[] = {
diff --git a/sys/arm/nvidia/tegra_i2c.c b/sys/arm/nvidia/tegra_i2c.c
--- a/sys/arm/nvidia/tegra_i2c.c
+++ b/sys/arm/nvidia/tegra_i2c.c
@@ -740,6 +740,11 @@
tegra_i2c_detach(device_t dev)
{
struct tegra_i2c_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
tegra_i2c_hw_init(sc);
@@ -753,7 +758,7 @@
LOCK_DESTROY(sc);
if (sc->iicbus)
device_delete_child(dev, sc->iicbus);
- return (bus_generic_detach(dev));
+ return (0);
}
static phandle_t
diff --git a/sys/arm/nvidia/tegra_mc.c b/sys/arm/nvidia/tegra_mc.c
--- a/sys/arm/nvidia/tegra_mc.c
+++ b/sys/arm/nvidia/tegra_mc.c
@@ -280,6 +280,11 @@
tegra_mc_detach(device_t dev)
{
struct tegra_mc_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
if (sc->irq_h != NULL)
@@ -290,7 +295,7 @@
bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->mem_res);
LOCK_DESTROY(sc);
- return (bus_generic_detach(dev));
+ return (0);
}
static device_method_t tegra_mc_methods[] = {
diff --git a/sys/arm/nvidia/tegra_rtc.c b/sys/arm/nvidia/tegra_rtc.c
--- a/sys/arm/nvidia/tegra_rtc.c
+++ b/sys/arm/nvidia/tegra_rtc.c
@@ -266,6 +266,11 @@
tegra_rtc_detach(device_t dev)
{
struct tegra_rtc_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
if (sc->irq_h != NULL)
@@ -276,7 +281,7 @@
bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->mem_res);
LOCK_DESTROY(sc);
- return (bus_generic_detach(dev));
+ return (0);
}
static device_method_t tegra_rtc_methods[] = {
diff --git a/sys/arm/ti/ti_adc.c b/sys/arm/ti/ti_adc.c
--- a/sys/arm/ti/ti_adc.c
+++ b/sys/arm/ti/ti_adc.c
@@ -915,6 +915,11 @@
ti_adc_detach(device_t dev)
{
struct ti_adc_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
@@ -938,7 +943,7 @@
if (sc->sc_mem_res)
bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res);
- return (bus_generic_detach(dev));
+ return (0);
}
static device_method_t ti_adc_methods[] = {
diff --git a/sys/arm64/nvidia/tegra210/max77620.c b/sys/arm64/nvidia/tegra210/max77620.c
--- a/sys/arm64/nvidia/tegra210/max77620.c
+++ b/sys/arm64/nvidia/tegra210/max77620.c
@@ -450,6 +450,11 @@
max77620_detach(device_t dev)
{
struct max77620_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
if (sc->irq_h != NULL)
@@ -458,7 +463,7 @@
bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq_res);
LOCK_DESTROY(sc);
- return (bus_generic_detach(dev));
+ return (0);
}
static phandle_t
diff --git a/sys/arm64/nvidia/tegra210/max77620_rtc.c b/sys/arm64/nvidia/tegra210/max77620_rtc.c
--- a/sys/arm64/nvidia/tegra210/max77620_rtc.c
+++ b/sys/arm64/nvidia/tegra210/max77620_rtc.c
@@ -366,11 +366,16 @@
max77620_rtc_detach(device_t dev)
{
struct max77620_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
LOCK_DESTROY(sc);
- return (bus_generic_detach(dev));
+ return (0);
}
/*
diff --git a/sys/dev/dwwdt/dwwdt.c b/sys/dev/dwwdt/dwwdt.c
--- a/sys/dev/dwwdt/dwwdt.c
+++ b/sys/dev/dwwdt/dwwdt.c
@@ -309,6 +309,7 @@
dwwdt_detach(device_t dev)
{
struct dwwdt_softc *sc = device_get_softc(dev);
+ int error;
if (dwwdt_started(sc)) {
/*
@@ -318,6 +319,10 @@
return (EBUSY);
}
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
+
EVENTHANDLER_DEREGISTER(watchdog_list, sc->sc_evtag);
sc->sc_evtag = NULL;
@@ -337,7 +342,7 @@
sc->sc_mem_res);
}
- return (bus_generic_detach(dev));
+ return (0);
}
static int
diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c
--- a/sys/dev/ena/ena.c
+++ b/sys/dev/ena/ena.c
@@ -4030,6 +4030,10 @@
return (EBUSY);
}
+ rc = bus_generic_detach(pdev);
+ if (rc != 0)
+ return (rc);
+
ether_ifdetach(adapter->ifp);
ifmedia_removeall(&adapter->media);
@@ -4096,7 +4100,7 @@
free(ena_dev, M_DEVBUF);
- return (bus_generic_detach(pdev));
+ return (0);
}
/******************************************************************************
diff --git a/sys/dev/fdt/simplebus.c b/sys/dev/fdt/simplebus.c
--- a/sys/dev/fdt/simplebus.c
+++ b/sys/dev/fdt/simplebus.c
@@ -189,12 +189,17 @@
simplebus_detach(device_t dev)
{
struct simplebus_softc *sc;
+ int rv;
+
+ rv = bus_generic_detach(dev);
+ if (rv != 0)
+ return (rv);
sc = device_get_softc(dev);
if (sc->ranges != NULL)
free(sc->ranges, M_DEVBUF);
- return (bus_generic_detach(dev));
+ return (0);
}
void
diff --git a/sys/dev/gve/gve_main.c b/sys/dev/gve/gve_main.c
--- a/sys/dev/gve/gve_main.c
+++ b/sys/dev/gve/gve_main.c
@@ -820,6 +820,11 @@
{
struct gve_priv *priv = device_get_softc(dev);
if_t ifp = priv->ifp;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
ether_ifdetach(ifp);
@@ -836,7 +841,7 @@
taskqueue_free(priv->service_tq);
if_free(ifp);
- return (bus_generic_detach(dev));
+ return (0);
}
static device_method_t gve_methods[] = {
diff --git a/sys/dev/iicbus/pmic/act8846.c b/sys/dev/iicbus/pmic/act8846.c
--- a/sys/dev/iicbus/pmic/act8846.c
+++ b/sys/dev/iicbus/pmic/act8846.c
@@ -226,11 +226,16 @@
act8846_detach(device_t dev)
{
struct act8846_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
LOCK_DESTROY(sc);
- return (bus_generic_detach(dev));
+ return (0);
}
static device_method_t act8846_methods[] = {
diff --git a/sys/dev/mana/gdma_main.c b/sys/dev/mana/gdma_main.c
--- a/sys/dev/mana/gdma_main.c
+++ b/sys/dev/mana/gdma_main.c
@@ -1879,6 +1879,11 @@
mana_gd_detach(device_t dev)
{
struct gdma_context *gc = device_get_softc(dev);
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
mana_remove(&gc->mana);
@@ -1890,7 +1895,7 @@
pci_disable_busmaster(dev);
- return (bus_generic_detach(dev));
+ return (0);
}
diff --git a/sys/powerpc/mpc85xx/pci_mpc85xx.c b/sys/powerpc/mpc85xx/pci_mpc85xx.c
--- a/sys/powerpc/mpc85xx/pci_mpc85xx.c
+++ b/sys/powerpc/mpc85xx/pci_mpc85xx.c
@@ -673,12 +673,17 @@
fsl_pcib_detach(device_t dev)
{
struct fsl_pcib_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
mtx_destroy(&sc->sc_cfg_mtx);
- return (bus_generic_detach(dev));
+ return (0);
}
static int
diff --git a/sys/powerpc/powermac/cuda.c b/sys/powerpc/powermac/cuda.c
--- a/sys/powerpc/powermac/cuda.c
+++ b/sys/powerpc/powermac/cuda.c
@@ -259,6 +259,11 @@
static int cuda_detach(device_t dev) {
struct cuda_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
@@ -267,7 +272,7 @@
bus_release_resource(dev, SYS_RES_MEMORY, sc->sc_memrid, sc->sc_memr);
mtx_destroy(&sc->sc_mutex);
- return (bus_generic_detach(dev));
+ return (0);
}
static uint8_t
diff --git a/sys/powerpc/powermac/pmu.c b/sys/powerpc/powermac/pmu.c
--- a/sys/powerpc/powermac/pmu.c
+++ b/sys/powerpc/powermac/pmu.c
@@ -524,6 +524,11 @@
pmu_detach(device_t dev)
{
struct pmu_softc *sc;
+ int error;
+
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
sc = device_get_softc(dev);
@@ -535,7 +540,7 @@
bus_release_resource(dev, SYS_RES_MEMORY, sc->sc_memrid, sc->sc_memr);
mtx_destroy(&sc->sc_mutex);
- return (bus_generic_detach(dev));
+ return (0);
}
static uint8_t
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Mar 20, 4:03 PM (14 h, 46 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17232222
Default Alt Text
D47387.id146022.diff (11 KB)
Attached To
Mode
D47387: Check for errors when detaching children first, not last
Attached
Detach File
Event Timeline
Log In to Comment