Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

HID: lenovo: Remove sysfs group on failure path

There is no sysfs_group_remove() on failure path in lenovo_probe_tpkbd().

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>

authored by

Alexey Khoroshilov and committed by
Jiri Kosina
b7212600 323ddaa8

+7 -2
+7 -2
drivers/hid/hid-lenovo.c
··· 599 599 GFP_KERNEL); 600 600 if (data_pointer == NULL) { 601 601 hid_err(hdev, "Could not allocate memory for driver data\n"); 602 - return -ENOMEM; 602 + ret = -ENOMEM; 603 + goto err; 603 604 } 604 605 605 606 // set same default values as windows driver ··· 611 610 name_micmute = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL); 612 611 if (name_mute == NULL || name_micmute == NULL) { 613 612 hid_err(hdev, "Could not allocate memory for led data\n"); 614 - return -ENOMEM; 613 + ret = -ENOMEM; 614 + goto err; 615 615 } 616 616 snprintf(name_mute, name_sz, "%s:amber:mute", dev_name(dev)); 617 617 snprintf(name_micmute, name_sz, "%s:amber:micmute", dev_name(dev)); ··· 636 634 lenovo_features_set_tpkbd(hdev); 637 635 638 636 return 0; 637 + err: 638 + sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tpkbd); 639 + return ret; 639 640 } 640 641 641 642 static int lenovo_probe_cptkbd(struct hid_device *hdev)