]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-4.20/hid-lenovo-add-checks-to-fix-of_led_classdev_registe.patch
move 4.20 queue back, something went wrong...
[thirdparty/kernel/stable-queue.git] / queue-4.20 / hid-lenovo-add-checks-to-fix-of_led_classdev_registe.patch
1 From 902ab423af03e7310b7cba51675748e3490fbaeb Mon Sep 17 00:00:00 2001
2 From: Aditya Pakki <pakki001@umn.edu>
3 Date: Mon, 24 Dec 2018 15:39:14 -0600
4 Subject: HID: lenovo: Add checks to fix of_led_classdev_register
5
6 [ Upstream commit 6ae16dfb61bce538d48b7fe98160fada446056c5 ]
7
8 In lenovo_probe_tpkbd(), the function of_led_classdev_register() could
9 return an error value that is unchecked. The fix adds these checks.
10
11 Signed-off-by: Aditya Pakki <pakki001@umn.edu>
12 Signed-off-by: Jiri Kosina <jkosina@suse.cz>
13 Signed-off-by: Sasha Levin <sashal@kernel.org>
14 ---
15 drivers/hid/hid-lenovo.c | 10 ++++++++--
16 1 file changed, 8 insertions(+), 2 deletions(-)
17
18 diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c
19 index 643b6eb54442..eacc76d2ab96 100644
20 --- a/drivers/hid/hid-lenovo.c
21 +++ b/drivers/hid/hid-lenovo.c
22 @@ -743,7 +743,9 @@ static int lenovo_probe_tpkbd(struct hid_device *hdev)
23 data_pointer->led_mute.brightness_get = lenovo_led_brightness_get_tpkbd;
24 data_pointer->led_mute.brightness_set = lenovo_led_brightness_set_tpkbd;
25 data_pointer->led_mute.dev = dev;
26 - led_classdev_register(dev, &data_pointer->led_mute);
27 + ret = led_classdev_register(dev, &data_pointer->led_mute);
28 + if (ret < 0)
29 + goto err;
30
31 data_pointer->led_micmute.name = name_micmute;
32 data_pointer->led_micmute.brightness_get =
33 @@ -751,7 +753,11 @@ static int lenovo_probe_tpkbd(struct hid_device *hdev)
34 data_pointer->led_micmute.brightness_set =
35 lenovo_led_brightness_set_tpkbd;
36 data_pointer->led_micmute.dev = dev;
37 - led_classdev_register(dev, &data_pointer->led_micmute);
38 + ret = led_classdev_register(dev, &data_pointer->led_micmute);
39 + if (ret < 0) {
40 + led_classdev_unregister(&data_pointer->led_mute);
41 + goto err;
42 + }
43
44 lenovo_features_set_tpkbd(hdev);
45
46 --
47 2.19.1
48