2023-10-20 09:03:29

by Su Hui

[permalink] [raw]
Subject: [PATCH] HID: wacom_sys: add error code check in wacom_feature_mapping

hid_report_raw_event() can return error code like '-ENOMEM' if
failed, so check 'ret' to make sure all things work fine.

Signed-off-by: Su Hui <[email protected]>
---
drivers/hid/wacom_sys.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c
index 3f704b8072e8..1f898d4ee708 100644
--- a/drivers/hid/wacom_sys.c
+++ b/drivers/hid/wacom_sys.c
@@ -320,6 +320,8 @@ static void wacom_feature_mapping(struct hid_device *hdev,
if (ret == n && features->type == HID_GENERIC) {
ret = hid_report_raw_event(hdev,
HID_FEATURE_REPORT, data, n, 0);
+ if (ret)
+ hid_warn(hdev, "failed to report feature\n");
} else if (ret == 2 && features->type != HID_GENERIC) {
features->touch_max = data[1];
} else {
@@ -381,6 +383,8 @@ static void wacom_feature_mapping(struct hid_device *hdev,
if (ret == n) {
ret = hid_report_raw_event(hdev, HID_FEATURE_REPORT,
data, n, 0);
+ if (ret)
+ hid_warn(hdev, "failed to report feature\n");
} else {
hid_warn(hdev, "%s: could not retrieve sensor offsets\n",
__func__);
--
2.30.2


2023-11-06 03:58:03

by Rahul Rameshbabu

[permalink] [raw]
Subject: Re: [PATCH] HID: wacom_sys: add error code check in wacom_feature_mapping

On Fri, 20 Oct, 2023 17:02:38 +0800 "Su Hui" <[email protected]> wrote:
> hid_report_raw_event() can return error code like '-ENOMEM' if
> failed, so check 'ret' to make sure all things work fine.

I can agree with adding logging for error cases personally.

>
> Signed-off-by: Su Hui <[email protected]>
> ---
> drivers/hid/wacom_sys.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c
> index 3f704b8072e8..1f898d4ee708 100644
> --- a/drivers/hid/wacom_sys.c
> +++ b/drivers/hid/wacom_sys.c
> @@ -320,6 +320,8 @@ static void wacom_feature_mapping(struct hid_device *hdev,
> if (ret == n && features->type == HID_GENERIC) {
> ret = hid_report_raw_event(hdev,
> HID_FEATURE_REPORT, data, n, 0);
> + if (ret)
> + hid_warn(hdev, "failed to report feature\n");

I think we should report the returned error information as well.

https://docs.kernel.org/core-api/printk-formats.html#error-pointers

Typically what I do is use ERR_PTR in tandem with the %pe modifier for
printing errors.

> } else if (ret == 2 && features->type != HID_GENERIC) {
> features->touch_max = data[1];
> } else {
> @@ -381,6 +383,8 @@ static void wacom_feature_mapping(struct hid_device *hdev,
> if (ret == n) {
> ret = hid_report_raw_event(hdev, HID_FEATURE_REPORT,
> data, n, 0);
> + if (ret)
> + hid_warn(hdev, "failed to report feature\n");
> } else {
> hid_warn(hdev, "%s: could not retrieve sensor offsets\n",
> __func__);

--
Thanks for the patch,

Rahul Rameshbabu

2023-11-06 05:51:03

by Su Hui

[permalink] [raw]
Subject: Re: [PATCH] HID: wacom_sys: add error code check in wacom_feature_mapping

On 2023/11/6 11:57, Rahul Rameshbabu wrote:
> On Fri, 20 Oct, 2023 17:02:38 +0800 "Su Hui" <[email protected]> wrote:
>> hid_report_raw_event() can return error code like '-ENOMEM' if
>> failed, so check 'ret' to make sure all things work fine.
> I can agree with adding logging for error cases personally.
>
>> Signed-off-by: Su Hui <[email protected]>
>> ---
>> drivers/hid/wacom_sys.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c
>> index 3f704b8072e8..1f898d4ee708 100644
>> --- a/drivers/hid/wacom_sys.c
>> +++ b/drivers/hid/wacom_sys.c
>> @@ -320,6 +320,8 @@ static void wacom_feature_mapping(struct hid_device *hdev,
>> if (ret == n && features->type == HID_GENERIC) {
>> ret = hid_report_raw_event(hdev,
>> HID_FEATURE_REPORT, data, n, 0);
>> + if (ret)
>> + hid_warn(hdev, "failed to report feature\n");
> I think we should report the returned error information as well.
Agreed, I will send v2 soon.
Thanks for your suggestions!

Su Hui

>
> https://docs.kernel.org/core-api/printk-formats.html#error-pointers
>
> Typically what I do is use ERR_PTR in tandem with the %pe modifier for
> printing errors.
>
>> } else if (ret == 2 && features->type != HID_GENERIC) {
>> features->touch_max = data[1];
>> } else {
>> @@ -381,6 +383,8 @@ static void wacom_feature_mapping(struct hid_device *hdev,
>> if (ret == n) {
>> ret = hid_report_raw_event(hdev, HID_FEATURE_REPORT,
>> data, n, 0);
>> + if (ret)
>> + hid_warn(hdev, "failed to report feature\n");
>> } else {
>> hid_warn(hdev, "%s: could not retrieve sensor offsets\n",
>> __func__);
> --
> Thanks for the patch,
>
> Rahul Rameshbabu
>