diff options
| -rw-r--r-- | drivers/hid/hid-core.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 0cddcaa3fe7f..0bfbc4813ad0 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c | |||
| @@ -230,9 +230,15 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign | |||
| 230 | return -1; | 230 | return -1; |
| 231 | } | 231 | } |
| 232 | 232 | ||
| 233 | if (parser->global.logical_maximum < parser->global.logical_minimum) { | 233 | if ((parser->global.logical_minimum < 0 && |
| 234 | hid_err(parser->device, "logical range invalid %d %d\n", | 234 | parser->global.logical_maximum < |
| 235 | parser->global.logical_minimum, parser->global.logical_maximum); | 235 | parser->global.logical_minimum) || |
| 236 | (parser->global.logical_minimum >= 0 && | ||
| 237 | (__u32)parser->global.logical_maximum < | ||
| 238 | (__u32)parser->global.logical_minimum)) { | ||
| 239 | dbg_hid("logical range invalid 0x%x 0x%x\n", | ||
| 240 | parser->global.logical_minimum, | ||
| 241 | parser->global.logical_maximum); | ||
| 236 | return -1; | 242 | return -1; |
| 237 | } | 243 | } |
| 238 | 244 | ||
