Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/sgimips/mace malloc() -> kmem_alloc() for private d...



details:   https://anonhg.NetBSD.org/src/rev/885d11e8b491
branches:  trunk
changeset: 807292:885d11e8b491
user:      macallan <macallan%NetBSD.org@localhost>
date:      Sat Apr 04 14:19:00 2015 +0000

description:
malloc() -> kmem_alloc() for private data, also kmem_free() them if we
don't finish attaching for whatever reason

found by Brainy

diffstat:

 sys/arch/sgimips/mace/macekbc.c |  17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diffs (67 lines):

diff -r 1c810e2ba0c1 -r 885d11e8b491 sys/arch/sgimips/mace/macekbc.c
--- a/sys/arch/sgimips/mace/macekbc.c   Sat Apr 04 14:12:40 2015 +0000
+++ b/sys/arch/sgimips/mace/macekbc.c   Sat Apr 04 14:19:00 2015 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: macekbc.c,v 1.7 2012/10/27 17:18:10 chs Exp $ */
+/* $NetBSD: macekbc.c,v 1.8 2015/04/04 14:19:00 macallan Exp $ */
 
 /*-
  * Copyright (c) 2007 Jared D. McNeill <jmcneill%invisible.ca@localhost>
@@ -31,12 +31,12 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: macekbc.c,v 1.7 2012/10/27 17:18:10 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: macekbc.c,v 1.8 2015/04/04 14:19:00 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
 #include <sys/syslog.h>
-#include <sys/malloc.h>
+#include <sys/kmem.h>
 
 #include <sys/bus.h>
 #include <machine/intr.h>
@@ -125,7 +125,7 @@
        aprint_normal(": PS2 controller\n");
        aprint_naive("\n");
 
-       t = malloc(sizeof(struct macekbc_internal), M_DEVBUF, M_NOWAIT|M_ZERO);
+       t = kmem_alloc(sizeof(struct macekbc_internal), KM_NOSLEEP);
        if (t == NULL) {
                aprint_error("%s: not enough memory\n", device_xname(self));
                return;
@@ -137,20 +137,20 @@
            0, &t->t_ioh[PCKBPORT_KBD_SLOT]) != 0) {
                aprint_error("%s: couldn't map kbd registers\n",
                    device_xname(self));
-               return;
+               goto bork;
        }
        if (bus_space_subregion(t->t_iot, maa->maa_sh, maa->maa_offset + 32,
            0, &t->t_ioh[PCKBPORT_AUX_SLOT]) != 0) {
                aprint_error("%s: couldn't map aux registers\n",
                    device_xname(self));
-               return;
+               goto bork;
        }
 
        if ((t->t_rxih = cpu_intr_establish(maa->maa_intr, maa->maa_intrmask,
            macekbc_intr, t)) == NULL) {
                printf("%s: couldn't establish interrupt\n",
                    device_xname(self));
-               return;
+               goto bork;
        }
        sc->sc_id = t;
        t->t_sc = sc;
@@ -169,6 +169,9 @@
                t->t_present[PCKBPORT_AUX_SLOT] = 1;
 
        return;
+bork:
+       kmem_free(t, sizeof(struct macekbc_internal));
+       return;
 }
 
 static int



Home | Main Index | Thread Index | Old Index