Em Mon, 1 Dec 2014 12:55:09 +0000 James Hogan <james.hogan@xxxxxxxxxx> escreveu: > When the img-ir driver is asked to change protocol, if the chosen > decoder is already loaded then don't call img_ir_set_decoder(), so as > not to clear the current filter. > > This is important because store_protocol() does not refresh the scancode > filter with the new protocol if the set of enabled protocols hasn't > actually changed, but it will still call the change_protocol() callback, > resulting in the filter being disabled in the hardware. > > The problem can be reproduced by setting a filter, and then setting the > protocol to the same protocol that is already set: > $ echo nec > protocols > $ echo 0xffff > filter_mask > $ echo nec > protocols > > After this, messages which don't match the filter still get received. This should be fixed at the RC core, as this is not driver-specific. Regards, Mauro > > Reported-by: Sifan Naeem <sifan.naeem@xxxxxxxxxx> > Signed-off-by: James Hogan <james.hogan@xxxxxxxxxx> > Cc: Mauro Carvalho Chehab <m.chehab@xxxxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> # v3.15+ > Cc: linux-media@xxxxxxxxxxxxxxx > --- > drivers/media/rc/img-ir/img-ir-hw.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/media/rc/img-ir/img-ir-hw.c b/drivers/media/rc/img-ir/img-ir-hw.c > index 9db065344b41..1566337c1059 100644 > --- a/drivers/media/rc/img-ir/img-ir-hw.c > +++ b/drivers/media/rc/img-ir/img-ir-hw.c > @@ -643,6 +643,12 @@ static int img_ir_change_protocol(struct rc_dev *dev, u64 *ir_type) > continue; > if (*ir_type & dec->type) { > *ir_type &= dec->type; > + /* > + * We don't want to clear the filter if nothing is > + * changing as it won't get set again. > + */ > + if (dec == hw->decoder) > + return 0; > img_ir_set_decoder(priv, dec, *ir_type); > goto success; > } -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html