From: Sean Young Date: Thu, 10 May 2018 11:37:51 +0000 (-0400) Subject: media: mceusb: filter out bogus timing irdata of duration 0 X-Git-Tag: v4.19~865^2~135 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d4589935ebab0f75bbb191ce2cb14c5f8f4f9429;p=platform%2Fkernel%2Flinux-rpi.git media: mceusb: filter out bogus timing irdata of duration 0 A mceusb device has been observed producing invalid irdata. Proactively guard against this. Suggested-by: Matthias Reichl Signed-off-by: Sean Young Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c index 1619b74..1ca49491 100644 --- a/drivers/media/rc/mceusb.c +++ b/drivers/media/rc/mceusb.c @@ -1177,6 +1177,11 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len) init_ir_raw_event(&rawir); rawir.pulse = ((ir->buf_in[i] & MCE_PULSE_BIT) != 0); rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK); + if (unlikely(!rawir.duration)) { + dev_warn(ir->dev, "nonsensical irdata %02x with duration 0", + ir->buf_in[i]); + break; + } if (rawir.pulse) { ir->pulse_tunit += rawir.duration; ir->pulse_count++;