summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQasim Ijaz <qasdev00@gmail.com>2025-06-15 23:59:41 +0100
committerJiri Kosina <jkosina@suse.com>2025-06-20 09:01:27 +0200
commit4540e41e753a7d69ecd3f5bad51fe620205c3a18 (patch)
tree3440800f4fa063300f55f8c47dcff3489782614e
parentf3054152c12e2eed1e72704aff47b0ea58229584 (diff)
HID: appletb-kbd: fix "appletb_backlight" backlight device reference counting
During appletb_kbd_probe, probe attempts to get the backlight device by name. When this happens backlight_device_get_by_name looks for a device in the backlight class which has name "appletb_backlight" and upon finding a match it increments the reference count for the device and returns it to the caller. However this reference is never released leading to a reference leak. Fix this by decrementing the backlight device reference count on removal via put_device and on probe failure. Fixes: 93a0fc489481 ("HID: hid-appletb-kbd: add support for automatic brightness control while using the touchbar") Cc: stable@vger.kernel.org Signed-off-by: Qasim Ijaz <qasdev00@gmail.com> Reviewed-by: Aditya Garg <gargaditya08@live.com> Signed-off-by: Jiri Kosina <jkosina@suse.com>
-rw-r--r--drivers/hid/hid-appletb-kbd.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/hid/hid-appletb-kbd.c b/drivers/hid/hid-appletb-kbd.c
index ef51b2c06872..e06567886e50 100644
--- a/drivers/hid/hid-appletb-kbd.c
+++ b/drivers/hid/hid-appletb-kbd.c
@@ -438,6 +438,8 @@ static int appletb_kbd_probe(struct hid_device *hdev, const struct hid_device_id
return 0;
close_hw:
+ if (kbd->backlight_dev)
+ put_device(&kbd->backlight_dev->dev);
hid_hw_close(hdev);
stop_hw:
hid_hw_stop(hdev);
@@ -453,6 +455,9 @@ static void appletb_kbd_remove(struct hid_device *hdev)
input_unregister_handler(&kbd->inp_handler);
timer_delete_sync(&kbd->inactivity_timer);
+ if (kbd->backlight_dev)
+ put_device(&kbd->backlight_dev->dev);
+
hid_hw_close(hdev);
hid_hw_stop(hdev);
}