Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01ab35f1 authored by Benjamin Tissoires's avatar Benjamin Tissoires Committed by Jiri Kosina
Browse files

HID: lenovo-tpkbd: devm conversion



We can use the devres API in hid modules, so use it to avoid some kfree
and potential leaks.

Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 84fca9f3
Loading
Loading
Loading
Loading
+8 −22
Original line number Diff line number Diff line
@@ -339,7 +339,7 @@ static int tpkbd_probe_tp(struct hid_device *hdev)
	struct tpkbd_data_pointer *data_pointer;
	size_t name_sz = strlen(dev_name(dev)) + 16;
	char *name_mute, *name_micmute;
	int i, ret;
	int i;

	/* Validate required reports. */
	for (i = 0; i < 4; i++) {
@@ -354,7 +354,9 @@ static int tpkbd_probe_tp(struct hid_device *hdev)
		hid_warn(hdev, "Could not create sysfs group\n");
	}

	data_pointer = kzalloc(sizeof(struct tpkbd_data_pointer), GFP_KERNEL);
	data_pointer = devm_kzalloc(&hdev->dev,
				    sizeof(struct tpkbd_data_pointer),
				    GFP_KERNEL);
	if (data_pointer == NULL) {
		hid_err(hdev, "Could not allocate memory for driver data\n");
		return -ENOMEM;
@@ -364,20 +366,13 @@ static int tpkbd_probe_tp(struct hid_device *hdev)
	data_pointer->sensitivity = 0xa0;
	data_pointer->press_speed = 0x38;

	name_mute = kzalloc(name_sz, GFP_KERNEL);
	if (name_mute == NULL) {
	name_mute = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL);
	name_micmute = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL);
	if (name_mute == NULL || name_micmute == NULL) {
		hid_err(hdev, "Could not allocate memory for led data\n");
		ret = -ENOMEM;
		goto err;
		return -ENOMEM;
	}
	snprintf(name_mute, name_sz, "%s:amber:mute", dev_name(dev));

	name_micmute = kzalloc(name_sz, GFP_KERNEL);
	if (name_micmute == NULL) {
		hid_err(hdev, "Could not allocate memory for led data\n");
		ret = -ENOMEM;
		goto err2;
	}
	snprintf(name_micmute, name_sz, "%s:amber:micmute", dev_name(dev));

	hid_set_drvdata(hdev, data_pointer);
@@ -397,12 +392,6 @@ static int tpkbd_probe_tp(struct hid_device *hdev)
	tpkbd_features_set(hdev);

	return 0;

err2:
	kfree(name_mute);
err:
	kfree(data_pointer);
	return ret;
}

static int tpkbd_probe(struct hid_device *hdev,
@@ -449,9 +438,6 @@ static void tpkbd_remove_tp(struct hid_device *hdev)
	led_classdev_unregister(&data_pointer->led_mute);

	hid_set_drvdata(hdev, NULL);
	kfree(data_pointer->led_micmute.name);
	kfree(data_pointer->led_mute.name);
	kfree(data_pointer);
}

static void tpkbd_remove(struct hid_device *hdev)