mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
HID: asus: do not abort probe when not necessary
[ Upstream commit7253091766] In order to avoid dereferencing a NULL pointer asus_probe is aborted early and control of some asus devices is transferred over hid-generic after erroring out even when such NULL dereference cannot happen: only early abort when the NULL dereference can happen. Also make the code shorter and more adherent to coding standards removing square brackets enclosing single-line if-else statements. Fixes:d3af6ca9a8("HID: asus: fix UAF via HID_CLAIMED_INPUT validation") Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Jiri Kosina <jkosina@suse.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
59601f0e83
commit
fb9364ba4f
+10
-15
@@ -1223,22 +1223,17 @@ static int asus_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
||||
* were freed during registration due to no usages being mapped,
|
||||
* leaving drvdata->input pointing to freed memory.
|
||||
*/
|
||||
if (!drvdata->input || !(hdev->claimed & HID_CLAIMED_INPUT)) {
|
||||
hid_err(hdev, "Asus input not registered\n");
|
||||
ret = -ENOMEM;
|
||||
goto err_stop_hw;
|
||||
}
|
||||
if (drvdata->input && (hdev->claimed & HID_CLAIMED_INPUT)) {
|
||||
if (drvdata->tp)
|
||||
drvdata->input->name = "Asus TouchPad";
|
||||
else
|
||||
drvdata->input->name = "Asus Keyboard";
|
||||
|
||||
if (drvdata->tp) {
|
||||
drvdata->input->name = "Asus TouchPad";
|
||||
} else {
|
||||
drvdata->input->name = "Asus Keyboard";
|
||||
}
|
||||
|
||||
if (drvdata->tp) {
|
||||
ret = asus_start_multitouch(hdev);
|
||||
if (ret)
|
||||
goto err_stop_hw;
|
||||
if (drvdata->tp) {
|
||||
ret = asus_start_multitouch(hdev);
|
||||
if (ret)
|
||||
goto err_stop_hw;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user