The patch below does not apply to the 4.14-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <stable@xxxxxxxxxxxxxxx>. Possible dependencies: 20b794ddce47 ("media: mceusb: set timeout to at least timeout provided") 528222d853f9 ("media: rc: harmonize infrared durations to microseconds") 261463dbc34f ("media: rc: add support for Infrared Toy and IR Droid devices") 6f5129e251ae ("media: rtl28xxu: fix idle handling") e43148645d18 ("media: mceusb: fix out of bounds read in MCE receiver buffer") 81bab3fa6ca8 ("media: rc: increase rc-mm tolerance and add debug message") 9fc3ce31f5bd ("media: mceusb: fix (eliminate) TX IR signal length limit") 0c4df39e504b ("media: technisat-usb2: break out of loop at end of buffer") 172876928f98 ("media: rc: xbox_remote: add protocol and set timeout") a49a7a4635de ("media: smipcie: add universal ir capability") 721074b03411 ("media: rc: rcmm decoder and encoder") 903b77c63167 ("Merge tag 'linux-kselftest-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest") thanks, greg k-h ------------------ original commit in Linus's tree ------------------ >From 20b794ddce475ed012deb365000527c17b3e93e6 Mon Sep 17 00:00:00 2001 From: Sean Young <sean@xxxxxxxx> Date: Fri, 2 Sep 2022 12:32:21 +0200 Subject: [PATCH] media: mceusb: set timeout to at least timeout provided By rounding down, the actual timeout can be lower than requested. As a result, long spaces just below the requested timeout can be incorrectly reported as timeout and truncated. Fixes: 877f1a7cee3f ("media: rc: mceusb: allow the timeout to be configurable") Cc: stable@xxxxxxxxxxxxxxx Signed-off-by: Sean Young <sean@xxxxxxxx> Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c index 39d2b03e2631..c76ba24c1f55 100644 --- a/drivers/media/rc/mceusb.c +++ b/drivers/media/rc/mceusb.c @@ -1077,7 +1077,7 @@ static int mceusb_set_timeout(struct rc_dev *dev, unsigned int timeout) struct mceusb_dev *ir = dev->priv; unsigned int units; - units = DIV_ROUND_CLOSEST(timeout, MCE_TIME_UNIT); + units = DIV_ROUND_UP(timeout, MCE_TIME_UNIT); cmdbuf[2] = units >> 8; cmdbuf[3] = units;