summaryrefslogtreecommitdiffstats
path: root/sys/dev/kbdmux
diff options
context:
space:
mode:
authorpfg <pfg@FreeBSD.org>2015-04-29 15:41:19 +0000
committerpfg <pfg@FreeBSD.org>2015-04-29 15:41:19 +0000
commitfa1fbf0583a06db0c83b5a5370eb003a401d86e4 (patch)
treede018846085ee50fda62864d3379f73008387888 /sys/dev/kbdmux
parenta8c0a01d713d77167e1798aef4db65457ab90a34 (diff)
downloadFreeBSD-src-fa1fbf0583a06db0c83b5a5370eb003a401d86e4.zip
FreeBSD-src-fa1fbf0583a06db0c83b5a5370eb003a401d86e4.tar.gz
Plug memory leaks in kbdmux(4) (take 2)
This is a fix to the previous attempt in r281889, which some (most?) keyboards. Discussed with: emaste, jkim Found by: clang static analyzer CID: 1007072 CID: 1007073 CID: 1007074
Diffstat (limited to 'sys/dev/kbdmux')
-rw-r--r--sys/dev/kbdmux/kbdmux.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/dev/kbdmux/kbdmux.c b/sys/dev/kbdmux/kbdmux.c
index a21b37c..e0ae60b 100644
--- a/sys/dev/kbdmux/kbdmux.c
+++ b/sys/dev/kbdmux/kbdmux.c
@@ -470,6 +470,10 @@ kbdmux_init(int unit, keyboard_t **kbdp, void *arg, int flags)
KBDMUX_LOCK(state);
callout_reset(&state->ks_timo, TICKS, kbdmux_kbd_intr_timo, state);
KBDMUX_UNLOCK(state);
+ } else if (needfree) {
+ free(accmap, M_KBDMUX);
+ free(fkeymap, M_KBDMUX);
+ free(keymap, M_KBDMUX);
}
return (0);
OpenPOWER on IntegriCloud