summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorchristos <christos@NetBSD.org>2003-02-24 19:58:09 +0000
committerchristos <christos@NetBSD.org>2003-02-24 19:58:09 +0000
commit29cd3b6180ae74cc7d00992691cf5a8f4e508e92 (patch)
treed752cb41841d74045277b94644b0ffb05dd62299 /sys/dev
parent695a1f63b526c1fac8cb936648ecb8f64cbd524d (diff)
fix memory leaks.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/acpi/acpi_bat.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/sys/dev/acpi/acpi_bat.c b/sys/dev/acpi/acpi_bat.c
index bcc54938cdd..24909e1b125 100644
--- a/sys/dev/acpi/acpi_bat.c
+++ b/sys/dev/acpi/acpi_bat.c
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_bat.c,v 1.16 2003/02/17 14:37:57 tshiozak Exp $ */
+/* $NetBSD: acpi_bat.c,v 1.17 2003/02/24 19:58:09 christos Exp $ */
/*
* Copyright 2001 Bill Sommerfeld.
@@ -50,7 +50,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_bat.c,v 1.16 2003/02/17 14:37:57 tshiozak Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_bat.c,v 1.17 2003/02/24 19:58:09 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -337,12 +337,12 @@ acpibat_battery_present(struct acpibat_softc *sc)
if (p1->Type != ACPI_TYPE_INTEGER) {
printf("%s: expected INTEGER, got %d\n", sc->sc_dev.dv_xname,
p1->Type);
- return (-1);
+ goto out;
}
if (p1->Package.Count < 1) {
printf("%s: expected 1 elts, got %d\n",
sc->sc_dev.dv_xname, p1->Package.Count);
- return (-1);
+ goto out;
}
sta = p1->Integer.Value;
@@ -355,7 +355,11 @@ acpibat_battery_present(struct acpibat_softc *sc)
sc->sc_data[ACPIBAT_PRESENT].cur.data_s = 0;
ABAT_UNLOCK(sc, s);
+ AcpiOsFree(buf.Pointer);
return ((sta & ACPIBAT_STA_PRESENT)?1:0);
+out:
+ AcpiOsFree(buf.Pointer);
+ return -1;
}
/*
@@ -475,11 +479,11 @@ acpibat_get_status(struct acpibat_softc *sc)
if (p1->Type != ACPI_TYPE_PACKAGE) {
printf("bat: expected PACKAGE, got %d\n", p1->Type);
- return (AE_ERROR);
+ goto out;
}
if (p1->Package.Count < 4) {
printf("bat: expected 4 elts, got %d\n", p1->Package.Count);
- return (AE_ERROR);
+ goto out;
}
p2 = p1->Package.Elements;
@@ -503,7 +507,11 @@ acpibat_get_status(struct acpibat_softc *sc)
sc->sc_available = ABAT_ALV_STAT;
ABAT_UNLOCK(sc, s);
+ AcpiOsFree(buf.Pointer);
return (AE_OK);
+out:
+ AcpiOsFree(buf.Pointer);
+ return (AE_ERROR);
}
#define SCALE(x) ((x)/1000000), (((x)%1000000)/1000)