From f030eb951d3581caa3436d02f8f5090b7b712678 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Fri, 11 May 2018 12:30:04 +0200 Subject: [PATCH] RPi, Generic: filter out bogus timing data from mceusb receivers Backport of https://patchwork.linuxtv.org/patch/49430/ Signed-off-by: Matthias Reichl --- ...inux-999-improve-ir-timeout-handling.patch | 59 +++++++++++++++---- ...inux-999-improve-ir-timeout-handling.patch | 59 +++++++++++++++---- 2 files changed, 98 insertions(+), 20 deletions(-) diff --git a/packages/linux/patches/default/linux-999-improve-ir-timeout-handling.patch b/packages/linux/patches/default/linux-999-improve-ir-timeout-handling.patch index dff1045241..db9c49379c 100644 --- a/packages/linux/patches/default/linux-999-improve-ir-timeout-handling.patch +++ b/packages/linux/patches/default/linux-999-improve-ir-timeout-handling.patch @@ -1,7 +1,7 @@ From 057ccfd1d18842bd2fa39c4b996a9a952c5a821d Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Tue, 27 Mar 2018 19:35:11 +0200 -Subject: [PATCH 01/10] media: rc: set timeout to smallest value required by +Subject: [PATCH 01/11] media: rc: set timeout to smallest value required by enabled protocols backport of https://patchwork.linuxtv.org/patch/48516/ @@ -243,7 +243,7 @@ index 72f381522cb2..e7e20bcfe272 100644 From 00f54931b0ff7202020567544605b7e3c4f1dee8 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Tue, 27 Mar 2018 19:45:36 +0200 -Subject: [PATCH 02/10] media: rc: per-protocol repeat period and minimum keyup +Subject: [PATCH 02/11] media: rc: per-protocol repeat period and minimum keyup timer backport of https://patchwork.linuxtv.org/patch/48520/ @@ -409,7 +409,7 @@ index e7e20bcfe272..36f99a0919c3 100644 From 6f3d979fa02a3847799d838a03ad9c5ad009a778 Mon Sep 17 00:00:00 2001 From: Sean Young Date: Sun, 8 Apr 2018 22:19:39 +0100 -Subject: [PATCH 03/10] media: rc: mce_kbd decoder: low timeout values cause +Subject: [PATCH 03/11] media: rc: mce_kbd decoder: low timeout values cause double keydowns backport of https://patchwork.linuxtv.org/patch/48522/ @@ -458,7 +458,7 @@ index 7afeab04dbbf..a243d2d1ca93 100644 From f4d8df33339167784bb6a17e3ee2d20f9efe1b21 Mon Sep 17 00:00:00 2001 From: Sean Young Date: Sun, 8 Apr 2018 22:19:40 +0100 -Subject: [PATCH 04/10] media: rc: mce_kbd protocol encodes two scancodes +Subject: [PATCH 04/11] media: rc: mce_kbd protocol encodes two scancodes backport of https://patchwork.linuxtv.org/patch/48518/ @@ -541,7 +541,7 @@ index 36f99a0919c3..34cef7aa207c 100644 From 8b0ffc3eccf8737aa93c6b7bf9bc9d1e10d634bd Mon Sep 17 00:00:00 2001 From: Sean Young Date: Sun, 8 Apr 2018 22:19:41 +0100 -Subject: [PATCH 05/10] media: rc: mce_kbd decoder: fix stuck keys +Subject: [PATCH 05/11] media: rc: mce_kbd decoder: fix stuck keys backport of https://patchwork.linuxtv.org/patch/48519/ @@ -576,7 +576,7 @@ index 2ea48a54f2b3..164302ec4fef 100644 From b77de094b54449079890b8cc4fbc2f98573253b2 Mon Sep 17 00:00:00 2001 From: Sean Young Date: Sun, 8 Apr 2018 22:19:42 +0100 -Subject: [PATCH 06/10] media: rc: mceusb: allow the timeout to be configurable +Subject: [PATCH 06/11] media: rc: mceusb: allow the timeout to be configurable backport of https://patchwork.linuxtv.org/patch/48521/ @@ -636,7 +636,7 @@ index bf7aaff3aa37..160754a7a382 100644 From dccebb7231209acb8da7f9f1e8fd1e7c12c3e70f Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Sun, 15 Apr 2018 17:26:21 +0200 -Subject: [PATCH 07/10] media: rc: mce_kbd decoder: remove superfluous call to +Subject: [PATCH 07/11] media: rc: mce_kbd decoder: remove superfluous call to input_sync backport of https://patchwork.linuxtv.org/patch/48681/ @@ -669,7 +669,7 @@ index 164302ec4fef..f057b57074c9 100644 From 731b38824c8145bbc7d55a9c2af4e449ff5988fb Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Sun, 15 Apr 2018 17:38:49 +0200 -Subject: [PATCH 08/10] media: rc: mce_kbd decoder: fix race condition +Subject: [PATCH 08/11] media: rc: mce_kbd decoder: fix race condition backport of https://patchwork.linuxtv.org/patch/48680/ @@ -770,7 +770,7 @@ index 5fd3b5aed9ec..77928ae43104 100644 From 4e363f78b2aae387980ac411e0f901caee5da9e1 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Wed, 18 Apr 2018 13:50:52 +0200 -Subject: [PATCH 09/10] media: rc: mceusb: IR of length 0 means IR timeout, not +Subject: [PATCH 09/11] media: rc: mceusb: IR of length 0 means IR timeout, not reset backport of https://patchwork.linuxtv.org/patch/48782/ @@ -812,7 +812,7 @@ index 160754a7a382..dc7ebed00b3a 100644 From f74716d6fc4a38f56a374a00cb96be61f2d6fc2d Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Thu, 10 May 2018 10:42:24 +0200 -Subject: [PATCH 10/10] media: mceusb: MCE_CMD_SETIRTIMEOUT cause strange +Subject: [PATCH 10/11] media: mceusb: MCE_CMD_SETIRTIMEOUT cause strange behaviour on device backport of https://patchwork.linuxtv.org/patch/49409/ @@ -890,3 +890,42 @@ index dc7ebed00b3a..2e1241f09c9d 100644 -- 2.11.0 + +From 0899b373cb0604ed80a80b501dd48cf6a3cbff25 Mon Sep 17 00:00:00 2001 +From: Matthias Reichl +Date: Fri, 11 May 2018 12:20:44 +0200 +Subject: [PATCH 11/11] media: mceusb: filter out bogus timing irdata of + duration 0 + +Backport of https://patchwork.linuxtv.org/patch/49430/ + +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: Matthias Reichl +--- + drivers/media/rc/mceusb.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c +index 2e1241f09c9d..7864a30c4f9e 100644 +--- a/drivers/media/rc/mceusb.c ++++ b/drivers/media/rc/mceusb.c +@@ -1038,6 +1038,12 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len) + rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK) + * US_TO_NS(MCE_TIME_UNIT); + ++ if (unlikely(!rawir.duration)) { ++ dev_warn(ir->dev, "nonsensical irdata %02x with duration 0", ++ ir->buf_in[i]); ++ break; ++ } ++ + dev_dbg(ir->dev, "Storing %s with duration %u", + rawir.pulse ? "pulse" : "space", + rawir.duration); +-- +2.11.0 + diff --git a/packages/linux/patches/raspberrypi/linux-999-improve-ir-timeout-handling.patch b/packages/linux/patches/raspberrypi/linux-999-improve-ir-timeout-handling.patch index dff1045241..db9c49379c 100644 --- a/packages/linux/patches/raspberrypi/linux-999-improve-ir-timeout-handling.patch +++ b/packages/linux/patches/raspberrypi/linux-999-improve-ir-timeout-handling.patch @@ -1,7 +1,7 @@ From 057ccfd1d18842bd2fa39c4b996a9a952c5a821d Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Tue, 27 Mar 2018 19:35:11 +0200 -Subject: [PATCH 01/10] media: rc: set timeout to smallest value required by +Subject: [PATCH 01/11] media: rc: set timeout to smallest value required by enabled protocols backport of https://patchwork.linuxtv.org/patch/48516/ @@ -243,7 +243,7 @@ index 72f381522cb2..e7e20bcfe272 100644 From 00f54931b0ff7202020567544605b7e3c4f1dee8 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Tue, 27 Mar 2018 19:45:36 +0200 -Subject: [PATCH 02/10] media: rc: per-protocol repeat period and minimum keyup +Subject: [PATCH 02/11] media: rc: per-protocol repeat period and minimum keyup timer backport of https://patchwork.linuxtv.org/patch/48520/ @@ -409,7 +409,7 @@ index e7e20bcfe272..36f99a0919c3 100644 From 6f3d979fa02a3847799d838a03ad9c5ad009a778 Mon Sep 17 00:00:00 2001 From: Sean Young Date: Sun, 8 Apr 2018 22:19:39 +0100 -Subject: [PATCH 03/10] media: rc: mce_kbd decoder: low timeout values cause +Subject: [PATCH 03/11] media: rc: mce_kbd decoder: low timeout values cause double keydowns backport of https://patchwork.linuxtv.org/patch/48522/ @@ -458,7 +458,7 @@ index 7afeab04dbbf..a243d2d1ca93 100644 From f4d8df33339167784bb6a17e3ee2d20f9efe1b21 Mon Sep 17 00:00:00 2001 From: Sean Young Date: Sun, 8 Apr 2018 22:19:40 +0100 -Subject: [PATCH 04/10] media: rc: mce_kbd protocol encodes two scancodes +Subject: [PATCH 04/11] media: rc: mce_kbd protocol encodes two scancodes backport of https://patchwork.linuxtv.org/patch/48518/ @@ -541,7 +541,7 @@ index 36f99a0919c3..34cef7aa207c 100644 From 8b0ffc3eccf8737aa93c6b7bf9bc9d1e10d634bd Mon Sep 17 00:00:00 2001 From: Sean Young Date: Sun, 8 Apr 2018 22:19:41 +0100 -Subject: [PATCH 05/10] media: rc: mce_kbd decoder: fix stuck keys +Subject: [PATCH 05/11] media: rc: mce_kbd decoder: fix stuck keys backport of https://patchwork.linuxtv.org/patch/48519/ @@ -576,7 +576,7 @@ index 2ea48a54f2b3..164302ec4fef 100644 From b77de094b54449079890b8cc4fbc2f98573253b2 Mon Sep 17 00:00:00 2001 From: Sean Young Date: Sun, 8 Apr 2018 22:19:42 +0100 -Subject: [PATCH 06/10] media: rc: mceusb: allow the timeout to be configurable +Subject: [PATCH 06/11] media: rc: mceusb: allow the timeout to be configurable backport of https://patchwork.linuxtv.org/patch/48521/ @@ -636,7 +636,7 @@ index bf7aaff3aa37..160754a7a382 100644 From dccebb7231209acb8da7f9f1e8fd1e7c12c3e70f Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Sun, 15 Apr 2018 17:26:21 +0200 -Subject: [PATCH 07/10] media: rc: mce_kbd decoder: remove superfluous call to +Subject: [PATCH 07/11] media: rc: mce_kbd decoder: remove superfluous call to input_sync backport of https://patchwork.linuxtv.org/patch/48681/ @@ -669,7 +669,7 @@ index 164302ec4fef..f057b57074c9 100644 From 731b38824c8145bbc7d55a9c2af4e449ff5988fb Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Sun, 15 Apr 2018 17:38:49 +0200 -Subject: [PATCH 08/10] media: rc: mce_kbd decoder: fix race condition +Subject: [PATCH 08/11] media: rc: mce_kbd decoder: fix race condition backport of https://patchwork.linuxtv.org/patch/48680/ @@ -770,7 +770,7 @@ index 5fd3b5aed9ec..77928ae43104 100644 From 4e363f78b2aae387980ac411e0f901caee5da9e1 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Wed, 18 Apr 2018 13:50:52 +0200 -Subject: [PATCH 09/10] media: rc: mceusb: IR of length 0 means IR timeout, not +Subject: [PATCH 09/11] media: rc: mceusb: IR of length 0 means IR timeout, not reset backport of https://patchwork.linuxtv.org/patch/48782/ @@ -812,7 +812,7 @@ index 160754a7a382..dc7ebed00b3a 100644 From f74716d6fc4a38f56a374a00cb96be61f2d6fc2d Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Thu, 10 May 2018 10:42:24 +0200 -Subject: [PATCH 10/10] media: mceusb: MCE_CMD_SETIRTIMEOUT cause strange +Subject: [PATCH 10/11] media: mceusb: MCE_CMD_SETIRTIMEOUT cause strange behaviour on device backport of https://patchwork.linuxtv.org/patch/49409/ @@ -890,3 +890,42 @@ index dc7ebed00b3a..2e1241f09c9d 100644 -- 2.11.0 + +From 0899b373cb0604ed80a80b501dd48cf6a3cbff25 Mon Sep 17 00:00:00 2001 +From: Matthias Reichl +Date: Fri, 11 May 2018 12:20:44 +0200 +Subject: [PATCH 11/11] media: mceusb: filter out bogus timing irdata of + duration 0 + +Backport of https://patchwork.linuxtv.org/patch/49430/ + +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: Matthias Reichl +--- + drivers/media/rc/mceusb.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c +index 2e1241f09c9d..7864a30c4f9e 100644 +--- a/drivers/media/rc/mceusb.c ++++ b/drivers/media/rc/mceusb.c +@@ -1038,6 +1038,12 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len) + rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK) + * US_TO_NS(MCE_TIME_UNIT); + ++ if (unlikely(!rawir.duration)) { ++ dev_warn(ir->dev, "nonsensical irdata %02x with duration 0", ++ ir->buf_in[i]); ++ break; ++ } ++ + dev_dbg(ir->dev, "Storing %s with duration %u", + rawir.pulse ? "pulse" : "space", + rawir.duration); +-- +2.11.0 +