Commit b2dd9f2e authored by Stefan Agner's avatar Stefan Agner Committed by Jiri Kosina

HID: core: fix memory leak on probe

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: 08a8a7cf ("HID: core: do not upper bound the collection stack")
Signed-off-by: default avatarStefan Agner <stefan@agner.ch>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent e38c0ac5
...@@ -1039,6 +1039,7 @@ int hid_open_report(struct hid_device *device) ...@@ -1039,6 +1039,7 @@ int hid_open_report(struct hid_device *device)
hid_err(device, "unbalanced delimiter at end of report description\n"); hid_err(device, "unbalanced delimiter at end of report description\n");
goto err; goto err;
} }
kfree(parser->collection_stack);
vfree(parser); vfree(parser);
device->status |= HID_STAT_PARSED; device->status |= HID_STAT_PARSED;
return 0; return 0;
...@@ -1047,6 +1048,7 @@ int hid_open_report(struct hid_device *device) ...@@ -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)); hid_err(device, "item fetching failed at offset %d\n", (int)(end - start));
err: err:
kfree(parser->collection_stack);
vfree(parser); vfree(parser);
hid_close_report(device); hid_close_report(device);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment