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 <hdegoede@redhat.com>
This commit is contained in:
Hans de Goede 2014-09-24 14:06:08 +02:00 committed by Marek Vasut
parent be17e752f3
commit dfe5b1c86f
1 changed files with 13 additions and 3 deletions

View File

@ -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