Re: [PATCH] hid_parse failure

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

 



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
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[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