diff options
Diffstat (limited to 'sys/kern/subr_bus.c')
-rw-r--r-- | sys/kern/subr_bus.c | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index fd2e9d4..cff6e7f 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -617,7 +617,25 @@ bad: static void devadded(device_t dev) { - devaddq("+", device_get_nameunit(dev), dev); + char *pnp = NULL; + char *tmp = NULL; + + pnp = malloc(1024, M_BUS, M_NOWAIT); + if (pnp == NULL) + goto fail; + tmp = malloc(1024, M_BUS, M_NOWAIT); + if (tmp == NULL) + goto fail; + *pnp = '\0'; + bus_child_pnpinfo_str(dev, pnp, 1024); + snprintf(tmp, 1024, "%s %s", device_get_nameunit(dev), pnp); + devaddq("+", tmp, dev); +fail: + if (pnp != NULL) + free(pnp, M_BUS); + if (tmp != NULL) + free(tmp, M_BUS); + return; } /* @@ -627,7 +645,25 @@ devadded(device_t dev) static void devremoved(device_t dev) { - devaddq("-", device_get_nameunit(dev), dev); + char *pnp = NULL; + char *tmp = NULL; + + pnp = malloc(1024, M_BUS, M_NOWAIT); + if (pnp == NULL) + goto fail; + tmp = malloc(1024, M_BUS, M_NOWAIT); + if (tmp == NULL) + goto fail; + *pnp = '\0'; + bus_child_pnpinfo_str(dev, pnp, 1024); + snprintf(tmp, 1024, "%s %s", device_get_nameunit(dev), pnp); + devaddq("-", tmp, dev); +fail: + if (pnp != NULL) + free(pnp, M_BUS); + if (tmp != NULL) + free(tmp, M_BUS); + return; } /* |