diff options
author | pfg <pfg@FreeBSD.org> | 2015-04-29 15:41:19 +0000 |
---|---|---|
committer | pfg <pfg@FreeBSD.org> | 2015-04-29 15:41:19 +0000 |
commit | fa1fbf0583a06db0c83b5a5370eb003a401d86e4 (patch) | |
tree | de018846085ee50fda62864d3379f73008387888 /sys/dev/kbdmux/kbdmux.c | |
parent | a8c0a01d713d77167e1798aef4db65457ab90a34 (diff) | |
download | FreeBSD-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/kbdmux.c')
-rw-r--r-- | sys/dev/kbdmux/kbdmux.c | 4 |
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); |