RPi, Generic: filter out bogus timing data from mceusb receivers

Backport of https://patchwork.linuxtv.org/patch/49430/

Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
Matthias Reichl 2018-05-11 12:30:04 +02:00
parent 3e752b947c
commit f030eb951d
2 changed files with 98 additions and 20 deletions

View File

@ -1,7 +1,7 @@
From 057ccfd1d18842bd2fa39c4b996a9a952c5a821d Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
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 <hias@horus.com>
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 <sean@mess.org>
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 <sean@mess.org>
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 <sean@mess.org>
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 <sean@mess.org>
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 <hias@horus.com>
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 <hias@horus.com>
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 <hias@horus.com>
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 <hias@horus.com>
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 <hias@horus.com>
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 <hias@horus.com>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Matthias Reichl <hias@horus.com>
---
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

View File

@ -1,7 +1,7 @@
From 057ccfd1d18842bd2fa39c4b996a9a952c5a821d Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
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 <hias@horus.com>
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 <sean@mess.org>
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 <sean@mess.org>
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 <sean@mess.org>
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 <sean@mess.org>
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 <hias@horus.com>
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 <hias@horus.com>
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 <hias@horus.com>
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 <hias@horus.com>
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 <hias@horus.com>
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 <hias@horus.com>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Matthias Reichl <hias@horus.com>
---
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