RE: [PATCH] hid_parse failure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have a sensor hub device, which exposes this problem.  I will send patch again.
I will send the patch again.

Thanks,
Srinivas


-----Original Message-----
From: Jiri Kosina [mailto:jkosina@xxxxxxx] 
Sent: Thursday, May 10, 2012 3:21 AM
To: Pandruvada, Srinivas
Cc: linux-input@xxxxxxxxxxxxxxx
Subject: Re: [PATCH] hid_parse failure

On Tue, 1 May 2012, srinivas pandruvada wrote:

> When logical maximum is 0xffffffff, the parser fails even if logical 
> minimum is equal to or greater than  0.
> By HID specification, if both the Logical Minimum and Logical Maximum 
> extents are defined as positive values (0 or greater) then the report 
> field can be assumed to be an unsigned value.
> Otherwise, all integer values are signed values represented in 2’s 
> complement format.

Signed-off-by: line is missing, could you please fix that?

> ---
>  drivers/hid/hid-core.c |   12 ++++++++++--
>  1 files changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 
> c757f10..b616f4b 100644
> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -225,8 +225,16 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign
>  		return -1;
>  	}
>  
> -	if (parser->global.logical_maximum < parser->global.logical_minimum) {
> -		dbg_hid("logical range invalid %d %d\n", parser->global.logical_minimum, parser->global.logical_maximum);
> +	if ((parser->global.logical_minimum < 0 &&
> +		parser->global.logical_maximum <
> +			parser->global.logical_minimum) ||
> +		(parser->global.logical_minimum >= 0 &&
> +			(__u32)parser->global.logical_maximum <
> +			(__u32)parser->global.logical_minimum)
> +		) {
> +		dbg_hid("logical range invalid 0x%x 0x%x\n",
> +			parser->global.logical_minimum,
> +				parser->global.logical_maximum);
>  		return -1;
>  	}

The change looks correct per se, but I will have to think a little bit more whether other places of report parsing don't need similar adjustments as well to work properly in such scenarios.

How did you find this out? By code/spec inspection, or do you actually have the device that exposes this problem?

Thanks,

--
Jiri Kosina
SUSE Labs
��.n��������+%������w��{.n�����{��)��^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�

[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux