diff options
author | njl <njl@FreeBSD.org> | 2005-03-27 03:37:43 +0000 |
---|---|---|
committer | njl <njl@FreeBSD.org> | 2005-03-27 03:37:43 +0000 |
commit | 71e4d20ab99f06dce4a8002f552f8700c5ec48ac (patch) | |
tree | 889fd3eeaa020339b3442332b82e3a6041ec7b6f /sys/dev/acpica | |
parent | 9b9e1d2727975d72f9ec1a7f048cf43153aebea8 (diff) | |
download | FreeBSD-src-71e4d20ab99f06dce4a8002f552f8700c5ec48ac.zip FreeBSD-src-71e4d20ab99f06dce4a8002f552f8700c5ec48ac.tar.gz |
If a device_add_child fails (i.e. low memory situation), be sure to free
the unused ivars also.
Submitted by: pjd
Obtained from: Coverity Prevent analysis
Diffstat (limited to 'sys/dev/acpica')
-rw-r--r-- | sys/dev/acpica/acpi.c | 2 | ||||
-rw-r--r-- | sys/dev/acpica/acpi_cpu.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index bd323b1..b2cf564 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -704,6 +704,8 @@ acpi_add_child(device_t bus, int order, const char *name, int unit) child = device_add_child_ordered(bus, order, name, unit); if (child != NULL) device_set_ivars(child, ad); + else + free(ad, M_ACPIDEV); return (child); } diff --git a/sys/dev/acpica/acpi_cpu.c b/sys/dev/acpica/acpi_cpu.c index 30ba2e9..844111b 100644 --- a/sys/dev/acpica/acpi_cpu.c +++ b/sys/dev/acpica/acpi_cpu.c @@ -392,6 +392,8 @@ acpi_cpu_add_child(device_t dev, int order, const char *name, int unit) child = device_add_child_ordered(dev, order, name, unit); if (child != NULL) device_set_ivars(child, ad); + else + free(ad, M_TEMP); return (child); } |