[media] mceusb: buffer parsing fixups for 1st-gen device

If we pass in an offset, we shouldn't skip 2 bytes. And the first-gen
hardware generates a constant stream of interrupts, always with two
header bytes, and if there's been no IR, with nothing else. Bail from
ir processing without calling ir_handle_raw_event when we get such a
buffer delivered to us.

Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by Jarod Wilson and committed by Mauro Carvalho Chehab 29b4494b 1cd50f25

+5 -1
+5 -1
drivers/media/IR/mceusb.c
··· 446 return; 447 448 /* skip meaningless 0xb1 0x60 header bytes on orig receiver */ 449 - if (ir->flags.microsoft_gen1 && !out) 450 skip = 2; 451 452 if (len <= skip) ··· 806 /* skip meaningless 0xb1 0x60 header bytes on orig receiver */ 807 if (ir->flags.microsoft_gen1) 808 i = 2; 809 810 for (; i < buf_len; i++) { 811 switch (ir->parser_state) {
··· 446 return; 447 448 /* skip meaningless 0xb1 0x60 header bytes on orig receiver */ 449 + if (ir->flags.microsoft_gen1 && !out && !offset) 450 skip = 2; 451 452 if (len <= skip) ··· 806 /* skip meaningless 0xb1 0x60 header bytes on orig receiver */ 807 if (ir->flags.microsoft_gen1) 808 i = 2; 809 + 810 + /* if there's no data, just return now */ 811 + if (buf_len <= i) 812 + return; 813 814 for (; i < buf_len; i++) { 815 switch (ir->parser_state) {