Re: [REVIEW PATCH 1/2] img-ir/hw: Avoid clearing filter for no-op protocol change

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]