]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
HID: hid-goodix: Return 0 when receiving an empty HID feature package
authorCharles Wang <charles.goodix@gmail.com>
Thu, 31 Oct 2024 12:31:12 +0000 (20:31 +0800)
committerJiri Kosina <jkosina@suse.com>
Wed, 6 Nov 2024 14:08:31 +0000 (15:08 +0100)
Align with the i2c-hid driver by returning 0 instead of -EINVAL when
an empty response is received, ensuring that userspace programs utilizing
the hidraw node receive consistent return values.

Signed-off-by: Charles Wang <charles.goodix@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/hid-goodix-spi.c

index 0f87bf9c67cfb68f10d4bc55649346d20817c73b..077a91ee1d377f4cced2867fe162cb78a0c59065 100644 (file)
@@ -356,7 +356,7 @@ static int goodix_hid_check_ack_status(struct goodix_ts_data *ts, u32 *resp_len)
                                dev_err(ts->dev, "hrd.size too short: %d", len);
                                return -EINVAL;
                        }
-                       *resp_len = len;
+                       *resp_len = len - GOODIX_HID_PKG_LEN_SIZE;
                        return 0;
                }
 
@@ -446,7 +446,10 @@ static int goodix_hid_get_raw_report(struct hid_device *hid,
        if (error)
                return error;
 
-       len = min(len, response_data_len - GOODIX_HID_PKG_LEN_SIZE);
+       /* Empty reprot response */
+       if (!response_data_len)
+               return 0;
+       len = min(len, response_data_len);
        /* Step3: read response data(skip 2bytes of hid pkg length) */
        error = goodix_spi_read(ts, ts->hid_report_addr +
                                GOODIX_HID_ACK_HEADER_SIZE +