Skip to contentSkip to conversation

HID: vivaldi: fix sysfs attributes leak

PATCH Applied Dmitry Torokhov 3 participants 6 messages Feb 26, 2022 – Mar 9, 2022 HID

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 HID: vivaldi: fix sysfs attributes leak

The driver creates the top row map sysfs attribute in input_configured() method; unfortunately we do not have a callback that is executed when HID interface is unbound, thus we are leaking these sysfs attributes, for example when device is disconnected.

To fix it let's switch to managed version of adding sysfs attributes which will ensure that they are destroyed when the driver is unbound.

Fixes 14c9c014babe ("HID: add vivaldi HID driver")

---

Compiled only.

 drivers/hid/hid-vivaldi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/hid/hid-vivaldi.c +1 -1
index efa6140915f4..42ceb2058a09 100644
@@ -144,7 +144,7 @@ static void vivaldi_feature_mapping(struct hid_device *hdev,
 static int vivaldi_input_configured(struct hid_device *hdev,
 				    struct hid_input *hidinput)
 {
-	return sysfs_create_group(&hdev->dev.kobj, &input_attribute_group);
+	return devm_device_add_group(&hdev->dev, &input_attribute_group);
 }
 
 static const struct hid_device_id vivaldi_table[] = {
Signature · 5 lines
2.35.1.574.g5d30c73bfb-goog


-- 
Dmitry
Tested-by Reviewed-by on v1 1/1
#1 lore raw

Quoting Dmitry Torokhov (2022-02-25 17:18:58)

Quoted 11 lines

The driver creates the top row map sysfs attribute in input_configured() method; unfortunately we do not have a callback that is executed when HID interface is unbound, thus we are leaking these sysfs attributes, for example when device is disconnected.

To fix it let's switch to managed version of adding sysfs attributes which will ensure that they are destroyed when the driver is unbound.

Fixes 14c9c014babe ("HID: add vivaldi HID driver")

---

Makes sense

will you make a similar change for the hid-google-hammer driver?

#2 lore raw
Quoted 13 lines · Stephen Boyd

Quoting Dmitry Torokhov (2022-02-25 17:18:58)

Quoted 11 lines

The driver creates the top row map sysfs attribute in input_configured() method; unfortunately we do not have a callback that is executed when HID interface is unbound, thus we are leaking these sysfs attributes, for example when device is disconnected.

To fix it let's switch to managed version of adding sysfs attributes which will ensure that they are destroyed when the driver is unbound.

Fixes 14c9c014babe ("HID: add vivaldi HID driver")

---

Quoted 6 lines

Makes sense

will you make a similar change for the hid-google-hammer driver?

Yeah, I was taking a closer look at your series and that was the result of it.

Thanks.

Signature · 1 line
Dmitry
maintainer Applied
#3 lore raw
In reply to Dmitry Torokhov
Quoted 22 lines · Dmitry Torokhov

The driver creates the top row map sysfs attribute in input_configured() method; unfortunately we do not have a callback that is executed when HID interface is unbound, thus we are leaking these sysfs attributes, for example when device is disconnected.

To fix it let's switch to managed version of adding sysfs attributes which will ensure that they are destroyed when the driver is unbound.

Fixes 14c9c014babe ("HID: add vivaldi HID driver")

---

Compiled only.

 drivers/hid/hid-vivaldi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/hid/hid-vivaldi.c +0 -0
index efa6140915f4..42ceb2058a09 100644

drivers/hid/hid-vivaldi.c static void vivaldi_feature_mapping(struct hid_device *hdev, · line 150

Quoted 8 lines
drivers/hid/hid-vivaldi.c +1 -1
@@ -144,7 +144,7 @@ static void vivaldi_feature_mapping(struct hid_device *hdev,
 static int vivaldi_input_configured(struct hid_device *hdev,
 				    struct hid_input *hidinput)
 {
-	return sysfs_create_group(&hdev->dev.kobj, &input_attribute_group);
+	return devm_device_add_group(&hdev->dev, &input_attribute_group);
 }
 
 static const struct hid_device_id vivaldi_table[] = {

Applied, thanks Dmitry.

Signature · 2 lines
Jiri Kosina
SUSE Labs
#4 lore raw
Quoted 32 lines · Jiri Kosina
Quoted 29 lines · Dmitry Torokhov

The driver creates the top row map sysfs attribute in input_configured() method; unfortunately we do not have a callback that is executed when HID interface is unbound, thus we are leaking these sysfs attributes, for example when device is disconnected.

To fix it let's switch to managed version of adding sysfs attributes which will ensure that they are destroyed when the driver is unbound.

Fixes 14c9c014babe ("HID: add vivaldi HID driver")

---

Compiled only.

 drivers/hid/hid-vivaldi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/hid/hid-vivaldi.c +1 -1
index efa6140915f4..42ceb2058a09 100644
@@ -144,7 +144,7 @@ static void vivaldi_feature_mapping(struct hid_device *hdev,
 static int vivaldi_input_configured(struct hid_device *hdev,
                                  struct hid_input *hidinput)
 {
-     return sysfs_create_group(&hdev->dev.kobj, &input_attribute_group);
+     return devm_device_add_group(&hdev->dev, &input_attribute_group);
 }
 
Quoted 3 lines

drivers/hid/hid-vivaldi.c static void vivaldi_feature_mapping(struct hid_device *hdev, · line 150

Quoted 1 line
drivers/hid/hid-vivaldi.c +0 -0
 static const struct hid_device_id vivaldi_table[] = {

Applied, thanks Dmitry.

Jiri, are you planning to send this for 5.17 or 5.18?

Thanks.

Signature · 1 line
Dmitry
maintainer
#5 lore raw
Quoted 1 line · Dmitry Torokhov

Jiri, are you planning to send this for 5.17 or 5.18?

Hi Dmitry,

I've sent it to Linus for 5.17-rc still earlier today.

Signature · 2 lines
Jiri Kosina
SUSE Labs