Commit 72530917 authored by Denis Benato's avatar Denis Benato Committed by Jiri Kosina
Browse files

HID: asus: do not abort probe when not necessary



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: d3af6ca9 ("HID: asus: fix UAF via HID_CLAIMED_INPUT validation")
Signed-off-by: default avatarDenis Benato <denis.benato@linux.dev>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.com>
parent 43b3d1a9
Loading
Loading
Loading
Loading
+10 −15
Original line number Diff line number Diff line
@@ -1324,23 +1324,18 @@ 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->tp) {
	if (drvdata->input && (hdev->claimed & HID_CLAIMED_INPUT)) {
		if (drvdata->tp)
			drvdata->input->name = "Asus TouchPad";
	} else {
		else
			drvdata->input->name = "Asus Keyboard";
	}

		if (drvdata->tp) {
			ret = asus_start_multitouch(hdev);
			if (ret)
				goto err_stop_hw;
		}
	}

	return 0;
err_stop_hw: