[v2,1/3] HID: logitech-hidpp: Add more debug statements

Message ID 20230206221256.129198-1-hadess@hadess.net
State New
Headers
Series [v2,1/3] HID: logitech-hidpp: Add more debug statements |

Commit Message

Bastien Nocera Feb. 6, 2023, 10:12 p.m. UTC
  This should help us figure out some hairy problems with some devices.

Signed-off-by: Bastien Nocera <hadess@hadess.net>
---

Fixed kernel test bot warning:
   drivers/hid/hid-logitech-hidpp.c: In function 'hidpp_send_fap_command_sync':
>> drivers/hid/hid-logitech-hidpp.c:343:25: warning: format '%ld' expects argument of type 'long int', but argument 5 has type 'unsigned int' [-Wformat=]
     343 |                         "Invalid number of parameters passed to command (%d != %ld)\n",
         |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 drivers/hid/hid-logitech-hidpp.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)
  

Comments

Benjamin Tissoires Feb. 9, 2023, 2:54 p.m. UTC | #1
On Feb 06 2023, Bastien Nocera wrote:
> This should help us figure out some hairy problems with some devices.
> 
> Signed-off-by: Bastien Nocera <hadess@hadess.net>

FWIW, I am currently testing this patch and will probably push it today.

Cheers,
Benjamin

> ---
> 
> Fixed kernel test bot warning:
>    drivers/hid/hid-logitech-hidpp.c: In function 'hidpp_send_fap_command_sync':
> >> drivers/hid/hid-logitech-hidpp.c:343:25: warning: format '%ld' expects argument of type 'long int', but argument 5 has type 'unsigned int' [-Wformat=]
>      343 |                         "Invalid number of parameters passed to command (%d != %ld)\n",
>          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>  drivers/hid/hid-logitech-hidpp.c | 17 ++++++++++++++---
>  1 file changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
> index f44ba7be3cc5..1952d8d3b6b2 100644
> --- a/drivers/hid/hid-logitech-hidpp.c
> +++ b/drivers/hid/hid-logitech-hidpp.c
> @@ -338,8 +338,13 @@ static int hidpp_send_fap_command_sync(struct hidpp_device *hidpp,
>  	struct hidpp_report *message;
>  	int ret;
>  
> -	if (param_count > sizeof(message->fap.params))
> +	if (param_count > sizeof(message->fap.params)) {
> +		hid_dbg(hidpp->hid_dev,
> +			"Invalid number of parameters passed to command (%d != %llu)\n",
> +			param_count,
> +			(unsigned long long) sizeof(message->fap.params));
>  		return -EINVAL;
> +	}
>  
>  	message = kzalloc(sizeof(struct hidpp_report), GFP_KERNEL);
>  	if (!message)
> @@ -3440,11 +3445,17 @@ static int hi_res_scroll_enable(struct hidpp_device *hidpp)
>  		ret = hidpp10_enable_scrolling_acceleration(hidpp);
>  		multiplier = 8;
>  	}
> -	if (ret)
> +	if (ret) {
> +		hid_dbg(hidpp->hid_dev,
> +			"Could not enable hi-res scrolling: %d\n", ret);
>  		return ret;
> +	}
>  
> -	if (multiplier == 0)
> +	if (multiplier == 0) {
> +		hid_dbg(hidpp->hid_dev,
> +			"Invalid multiplier 0 from device, setting it to 1\n");
>  		multiplier = 1;
> +	}
>  
>  	hidpp->vertical_wheel_counter.wheel_multiplier = multiplier;
>  	hid_dbg(hidpp->hid_dev, "wheel multiplier = %d\n", multiplier);
> -- 
> 2.39.1
>
  
Benjamin Tissoires Feb. 9, 2023, 3:39 p.m. UTC | #2
On Mon, 06 Feb 2023 23:12:54 +0100, Bastien Nocera wrote:
> This should help us figure out some hairy problems with some devices.
> 
> 

Applied to hid/hid.git (for-6.3/logitech), thanks!

[1/3] HID: logitech-hidpp: Add more debug statements
      https://git.kernel.org/hid/hid/c/db5167cfaa0a

Cheers,
  

Patch

diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
index f44ba7be3cc5..1952d8d3b6b2 100644
--- a/drivers/hid/hid-logitech-hidpp.c
+++ b/drivers/hid/hid-logitech-hidpp.c
@@ -338,8 +338,13 @@  static int hidpp_send_fap_command_sync(struct hidpp_device *hidpp,
 	struct hidpp_report *message;
 	int ret;
 
-	if (param_count > sizeof(message->fap.params))
+	if (param_count > sizeof(message->fap.params)) {
+		hid_dbg(hidpp->hid_dev,
+			"Invalid number of parameters passed to command (%d != %llu)\n",
+			param_count,
+			(unsigned long long) sizeof(message->fap.params));
 		return -EINVAL;
+	}
 
 	message = kzalloc(sizeof(struct hidpp_report), GFP_KERNEL);
 	if (!message)
@@ -3440,11 +3445,17 @@  static int hi_res_scroll_enable(struct hidpp_device *hidpp)
 		ret = hidpp10_enable_scrolling_acceleration(hidpp);
 		multiplier = 8;
 	}
-	if (ret)
+	if (ret) {
+		hid_dbg(hidpp->hid_dev,
+			"Could not enable hi-res scrolling: %d\n", ret);
 		return ret;
+	}
 
-	if (multiplier == 0)
+	if (multiplier == 0) {
+		hid_dbg(hidpp->hid_dev,
+			"Invalid multiplier 0 from device, setting it to 1\n");
 		multiplier = 1;
+	}
 
 	hidpp->vertical_wheel_counter.wheel_multiplier = multiplier;
 	hid_dbg(hidpp->hid_dev, "wheel multiplier = %d\n", multiplier);