HID: core: fix memory leak on probe
authorStefan Agner <stefan@agner.ch>
Tue, 28 Aug 2018 11:29:54 +0000 (13:29 +0200)
committerJiri Kosina <jkosina@suse.cz>
Tue, 28 Aug 2018 12:07:16 +0000 (14:07 +0200)
The dynamically allocted collection stack does not get freed in
all situations. Make sure to also free the collection stack when
using the parser in hid_open_report().

Fixes: 08a8a7cf1459 ("HID: core: do not upper bound the collection stack")
Signed-off-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-core.c

index 3da354af7a0aac6ca129124eb6e511ea32c9535b..44a465db3f9616b5f6e7c6e60707ddb08c040bf2 100644 (file)
@@ -1039,6 +1039,7 @@ int hid_open_report(struct hid_device *device)
                                hid_err(device, "unbalanced delimiter at end of report description\n");
                                goto err;
                        }
+                       kfree(parser->collection_stack);
                        vfree(parser);
                        device->status |= HID_STAT_PARSED;
                        return 0;
@@ -1047,6 +1048,7 @@ int hid_open_report(struct hid_device *device)
 
        hid_err(device, "item fetching failed at offset %d\n", (int)(end - start));
 err:
+       kfree(parser->collection_stack);
        vfree(parser);
        hid_close_report(device);
        return ret;