linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Denis Benato <benato.denis96@gmail.com>
To: luke@ljones.dev
Cc: "Antheas Kapenekakis" <lkml@antheas.dev>,
	platform-driver-x86@vger.kernel.org, linux-input@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Jiri Kosina" <jikos@kernel.org>,
	"Benjamin Tissoires" <bentiss@kernel.org>,
	"Corentin Chary" <corentin.chary@gmail.com>,
	"Hans de Goede" <hdegoede@redhat.com>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Subject: Re: [PATCH v8 03/10] HID: asus: fortify keyboard handshake
Date: Wed, 19 Nov 2025 02:46:40 +0100	[thread overview]
Message-ID: <0ff6651f-4d68-40a3-83a7-7a7ffb2607e8@gmail.com> (raw)
In-Reply-To: <0F5019F3-2654-4C03-B7EF-5B7B83AF7B32@ljones.dev>


On 11/19/25 00:46, luke@ljones.dev wrote:
>
>> On 19 Nov 2025, at 12:43, Denis Benato <benato.denis96@gmail.com> wrote:
>>
>>
>> On 11/1/25 11:47, Antheas Kapenekakis wrote:
>>> Handshaking with an Asus device involves sending it a feature report
>>> with the string "ASUS Tech.Inc." and then reading it back to verify the
>>> handshake was successful, under the feature ID the interaction will
>>> take place.
>>>
>>> Currently, the driver only does the first part. Add the readback to
>>> verify the handshake was successful. As this could cause breakages,
>>> allow the verification to fail with a dmesg error until we verify
>>> all devices work with it (they seem to).
>>>
>>> Since the response is more than 16 bytes, increase the buffer size
>>> to 64 as well to avoid overflow errors.
>>>
>>> Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
>>> ---
>>> drivers/hid/hid-asus.c | 32 +++++++++++++++++++++++++++++---
>>> 1 file changed, 29 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c
>>> index 4676b7f20caf..03f0d86936fc 100644
>>> --- a/drivers/hid/hid-asus.c
>>> +++ b/drivers/hid/hid-asus.c
>>> @@ -48,7 +48,7 @@ MODULE_DESCRIPTION("Asus HID Keyboard and TouchPad");
>>> #define FEATURE_REPORT_ID 0x0d
>>> #define INPUT_REPORT_ID 0x5d
>>> #define FEATURE_KBD_REPORT_ID 0x5a
>>> -#define FEATURE_KBD_REPORT_SIZE 16
>>> +#define FEATURE_KBD_REPORT_SIZE 64
>>> #define FEATURE_KBD_LED_REPORT_ID1 0x5d
>>> #define FEATURE_KBD_LED_REPORT_ID2 0x5e
>>>
>>> @@ -393,14 +393,40 @@ static int asus_kbd_set_report(struct hid_device *hdev, const u8 *buf, size_t bu
>>>
>>> static int asus_kbd_init(struct hid_device *hdev, u8 report_id)
>>> {
>>> +	/*
>>> +	 * The handshake is first sent as a set_report, then retrieved
>>> +	 * from a get_report. They should be equal.
>>> +	 */
>>> 	const u8 buf[] = { report_id, 0x41, 0x53, 0x55, 0x53, 0x20, 0x54,
>>> 		     0x65, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x63, 0x2e, 0x00 };
>>> +	u8 *readbuf;
>> __free(kfree) = NULL here? Would simplify the code.
>>
>>> 	int ret;
>>>
>>> 	ret = asus_kbd_set_report(hdev, buf, sizeof(buf));
>>> -	if (ret < 0)
>>> -		hid_err(hdev, "Asus failed to send init command: %d\n", ret);
>>> +	if (ret < 0) {
>>> +		hid_err(hdev, "Asus failed to send handshake: %d\n", ret);
>>> +		return ret;
>>> +	}
>>> +
>>> +	readbuf = kzalloc(FEATURE_KBD_REPORT_SIZE, GFP_KERNEL);
>>> +	if (!readbuf)
>>> +		return -ENOMEM;
>>> +
>>> +	ret = hid_hw_raw_request(hdev, report_id, readbuf,
>>> +				 FEATURE_KBD_REPORT_SIZE, HID_FEATURE_REPORT,
>>> +				 HID_REQ_GET_REPORT);
>> See comments on patch 1 (also reported below): not sure if others
>> report_id are going to answer, my guess is that we will have to try
>> if you choose to go that route.
>>> +	if (ret < 0) {
>>> +		hid_err(hdev, "Asus failed to receive handshake ack: %d\n", ret);
>>> +	} else if (memcmp(readbuf, buf, sizeof(buf)) != 0) {
>>> +		hid_warn(hdev, "Asus handshake returned invalid response: %*ph\n",
>>> +			FEATURE_KBD_REPORT_SIZE, readbuf);
>>> +		/*
>>> +		 * Do not return error if handshake is wrong until this is
>>> +		 * verified to work for all devices.
>>> +		 */
>> In review of patch 1 I requested this function to be called with more report_id
>> than just 0x5a so this will have to be checked against those values too.
>>
>> In alternative you can fork based on the report_id, but having confirmation that
>> this is valid with those ids too would be of great help. Perhaps I can help you
>> with this asking to asus-linux users.
> The handshake works for 0x5D and 0x5E also.
Then this, like patch 2, should have been sent regardless of
this patchset, this whole discussion stalled two good patches
that we all agree are good and are totally independent from
the main issue?
>>> +	}
>>>
>>> +	kfree(readbuf);
>>> 	return ret;
>>> }
>>>

  reply	other threads:[~2025-11-19  1:46 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-01 10:47 [PATCH v8 00/10] HID: asus: Fix ASUS ROG Laptop's Keyboard backlight handling Antheas Kapenekakis
2025-11-01 10:47 ` [PATCH v8 01/10] HID: asus: simplify RGB init sequence Antheas Kapenekakis
2025-11-18 12:23   ` Ilpo Järvinen
2025-11-18 13:07     ` Antheas Kapenekakis
2025-11-18 23:17       ` Denis Benato
2025-11-01 10:47 ` [PATCH v8 02/10] HID: asus: use same report_id in response Antheas Kapenekakis
2025-11-18 23:20   ` Denis Benato
2025-11-01 10:47 ` [PATCH v8 03/10] HID: asus: fortify keyboard handshake Antheas Kapenekakis
2025-11-18 23:43   ` Denis Benato
2025-11-18 23:46     ` Antheas Kapenekakis
2025-11-18 23:46     ` luke
2025-11-19  1:46       ` Denis Benato [this message]
2025-11-19  7:22     ` Ilpo Järvinen
2025-11-01 10:47 ` [PATCH v8 04/10] HID: asus: prevent binding to all HID devices on ROG Antheas Kapenekakis
2025-11-19  0:38   ` Denis Benato
2025-11-19  1:45     ` Antheas Kapenekakis
2025-11-19  2:33       ` Denis Benato
2025-11-19  8:00   ` Ilpo Järvinen
2025-11-01 10:47 ` [PATCH v8 05/10] HID: asus: initialize LED endpoint early for old NKEY keyboards Antheas Kapenekakis
2025-11-18 12:10   ` Ilpo Järvinen
2025-11-19  0:54     ` Denis Benato
2025-11-19  1:11       ` Antheas Kapenekakis
2025-11-19  1:21         ` Denis Benato
2025-11-19  1:27           ` Antheas Kapenekakis
2025-11-19  7:55       ` Ilpo Järvinen
2025-11-01 10:47 ` [PATCH v8 06/10] platform/x86: asus-wmi: Add support for multiple kbd led handlers Antheas Kapenekakis
2025-11-01 10:47 ` [PATCH v8 07/10] HID: asus: listen to the asus-wmi brightness device instead of creating one Antheas Kapenekakis
2025-11-01 10:47 ` [PATCH v8 08/10] platform/x86: asus-wmi: remove unused keyboard backlight quirk Antheas Kapenekakis
2025-11-01 10:47 ` [PATCH v8 09/10] platform/x86: asus-wmi: add keyboard brightness event handler Antheas Kapenekakis
2025-11-01 10:47 ` [PATCH v8 10/10] HID: asus: add support for the asus-wmi brightness handler Antheas Kapenekakis
2025-11-12 12:44 ` [PATCH v8 00/10] HID: asus: Fix ASUS ROG Laptop's Keyboard backlight handling Antheas Kapenekakis
2025-11-12 13:21   ` Ilpo Järvinen
2025-11-12 13:41     ` Antheas Kapenekakis
2025-11-12 19:51       ` Denis Benato
2025-11-12 22:08         ` Antheas Kapenekakis
2025-11-12 23:22           ` Antheas Kapenekakis
2025-11-13  0:45             ` Denis Benato
2025-11-13  1:14           ` Denis Benato
2025-11-13  8:44             ` Antheas Kapenekakis
2025-11-13 20:23               ` luke
2025-11-13 21:17                 ` Antheas Kapenekakis
2025-11-13 22:09                   ` luke
2025-11-13 22:41                     ` Antheas Kapenekakis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0ff6651f-4d68-40a3-83a7-7a7ffb2607e8@gmail.com \
    --to=benato.denis96@gmail.com \
    --cc=bentiss@kernel.org \
    --cc=corentin.chary@gmail.com \
    --cc=hdegoede@redhat.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=jikos@kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkml@antheas.dev \
    --cc=luke@ljones.dev \
    --cc=platform-driver-x86@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).