From: Hans de Goede Date: Wed, 24 Sep 2014 12:06:08 +0000 (+0200) Subject: usb: kbd: Fix memleak on usb_kbd_deregister() X-Git-Tag: v2015.01-rc1~58 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=dfe5b1c86f1a79841e00c68d71d8027b223d4aa7;p=u-boot usb: kbd: Fix memleak on usb_kbd_deregister() Free the keyboard hid-report buffer and private data on deregister. Signed-off-by: Hans de Goede --- diff --git a/common/usb_kbd.c b/common/usb_kbd.c index cb869acfb7..253530a1b6 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -524,9 +524,19 @@ int drv_usb_kbd_init(void) int usb_kbd_deregister(int force) { #ifdef CONFIG_SYS_STDIO_DEREGISTER - int ret = stdio_deregister(DEVNAME, force); - if (ret && ret != -ENODEV) - return ret; + struct stdio_dev *dev; + struct usb_device *usb_kbd_dev; + struct usb_kbd_pdata *data; + + dev = stdio_get_by_name(DEVNAME); + if (dev) { + usb_kbd_dev = (struct usb_device *)dev->priv; + data = usb_kbd_dev->privptr; + if (stdio_deregister_dev(dev, force) != 0) + return 1; + free(data->new); + free(data); + } return 0; #else