[media] dib0700: fix nec repeat handling

Message ID 20161013212844.GA23230@gofer.mess.org (mailing list archive)
State Superseded, archived
Headers

Commit Message

Sean Young Oct. 13, 2016, 9:28 p.m. UTC
  When receiving a nec repeat, ensure the correct scancode is repeated
rather than a random value from the stack. This removes the need
for the bogus uninitialized_var() and also fixes the warnings:

    drivers/media/usb/dvb-usb/dib0700_core.c: In function ‘dib0700_rc_urb_completion’:
    drivers/media/usb/dvb-usb/dib0700_core.c:679: warning: ‘protocol’ may be used uninitialized in this function

Signed-off-by: Sean Young <sean@mess.org>
---
 drivers/media/usb/dvb-usb/dib0700_core.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
  

Comments

Arnd Bergmann Oct. 29, 2016, 9:04 p.m. UTC | #1
On Thursday, October 13, 2016 10:28:44 PM CEST Sean Young wrote:
> When receiving a nec repeat, ensure the correct scancode is repeated
> rather than a random value from the stack. This removes the need
> for the bogus uninitialized_var() and also fixes the warnings:
> 
>     drivers/media/usb/dvb-usb/dib0700_core.c: In function ‘dib0700_rc_urb_completion’:
>     drivers/media/usb/dvb-usb/dib0700_core.c:679: warning: ‘protocol’ may be used uninitialized in this function
> 
> Signed-off-by: Sean Young <sean@mess.org>
> ---
>  drivers/media/usb/dvb-usb/dib0700_core.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)

Acked-by: Arnd Bergmann <arnd@arndb.de>
Cc: stable@vger.kernel.org
Fixes: 2ceeca0499d7 ("[media] rc: split nec protocol into its three variants")
Fixes: d3c501d1938c ("V4L/DVB: dib0700: Fix RC protocol logic to properly handle NEC/NECx and RC-5")


The warning is gone for me too, so this obsoletes both
https://patchwork.linuxtv.org/patch/37494/ and
https://patchwork.kernel.org/patch/9380747/

Can we get this patch merged into v4.9 soonish? The warning
is currently disabled, but I'd like to make sure it gets turned
on again by default, and we should fix all the actual bugs in
the process.

	Arnd

[I replied to Mauro's other address here as mchehab@s-opensource.com
bounced with "Failed to transport message. Message sending failed
since the following recipients were rejected by the server:
mchehab@s-opensource.com (The server responded: Requested action
not taken: mailbox unavailable invalid DNS MX or A/AAAA resource
record)"]

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  
Sean Young Nov. 2, 2016, 4:45 p.m. UTC | #2
On Sat, Oct 29, 2016 at 11:04:32PM +0200, Arnd Bergmann wrote:
> On Thursday, October 13, 2016 10:28:44 PM CEST Sean Young wrote:
> > When receiving a nec repeat, ensure the correct scancode is repeated
> > rather than a random value from the stack. This removes the need
> > for the bogus uninitialized_var() and also fixes the warnings:
> > 
> >     drivers/media/usb/dvb-usb/dib0700_core.c: In function ‘dib0700_rc_urb_completion’:
> >     drivers/media/usb/dvb-usb/dib0700_core.c:679: warning: ‘protocol’ may be used uninitialized in this function
> > 
> > Signed-off-by: Sean Young <sean@mess.org>
> > ---
> >  drivers/media/usb/dvb-usb/dib0700_core.c | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> Acked-by: Arnd Bergmann <arnd@arndb.de>
> Cc: stable@vger.kernel.org
> Fixes: 2ceeca0499d7 ("[media] rc: split nec protocol into its three variants")
> Fixes: d3c501d1938c ("V4L/DVB: dib0700: Fix RC protocol logic to properly handle NEC/NECx and RC-5")
> 
> 
> The warning is gone for me too, so this obsoletes both
> https://patchwork.linuxtv.org/patch/37494/ and
> https://patchwork.kernel.org/patch/9380747/
> 
> Can we get this patch merged into v4.9 soonish? The warning
> is currently disabled, but I'd like to make sure it gets turned
> on again by default, and we should fix all the actual bugs in
> the process.

So after writing the patch and submitting it, I've bought the hardware on
ebay. Without this patch you get random scancodes on nec repeats, which
the patch indeed fixes.

Tested-by: Sean Young <sean@mess.org>

Note that this has been broken forever, so it is not a regression, so 
does it belong in stable?
 

Sean
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  
Arnd Bergmann Nov. 7, 2016, 1:04 p.m. UTC | #3
On Wednesday, November 2, 2016 4:45:09 PM CET Sean Young wrote:
> On Sat, Oct 29, 2016 at 11:04:32PM +0200, Arnd Bergmann wrote:
> > On Thursday, October 13, 2016 10:28:44 PM CEST Sean Young wrote:
> > > When receiving a nec repeat, ensure the correct scancode is repeated
> > > rather than a random value from the stack. This removes the need
> > > for the bogus uninitialized_var() and also fixes the warnings:
> > > 
> > >     drivers/media/usb/dvb-usb/dib0700_core.c: In function ‘dib0700_rc_urb_completion’:
> > >     drivers/media/usb/dvb-usb/dib0700_core.c:679: warning: ‘protocol’ may be used uninitialized in this function
> > > 
> > > Signed-off-by: Sean Young <sean@mess.org>
> > > ---
> > >  drivers/media/usb/dvb-usb/dib0700_core.c | 5 +++--
> > >  1 file changed, 3 insertions(+), 2 deletions(-)
> > 
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > Cc: stable@vger.kernel.org
> > Fixes: 2ceeca0499d7 ("[media] rc: split nec protocol into its three variants")
> > Fixes: d3c501d1938c ("V4L/DVB: dib0700: Fix RC protocol logic to properly handle NEC/NECx and RC-5")
> > 
> > 
> > The warning is gone for me too, so this obsoletes both
> > https://patchwork.linuxtv.org/patch/37494/ and
> > https://patchwork.kernel.org/patch/9380747/
> > 
> > Can we get this patch merged into v4.9 soonish? The warning
> > is currently disabled, but I'd like to make sure it gets turned
> > on again by default, and we should fix all the actual bugs in
> > the process.
> 
> So after writing the patch and submitting it, I've bought the hardware on
> ebay. Without this patch you get random scancodes on nec repeats, which
> the patch indeed fixes.
> 
> Tested-by: Sean Young <sean@mess.org>

Awesome, thanks for testing!

> Note that this has been broken forever, so it is not a regression, so 
> does it belong in stable?

I think it does, it doesn't have to be a regression to qualify for
stable kernels, and it is clearly a bugfix.

	Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff --git a/drivers/media/usb/dvb-usb/dib0700_core.c b/drivers/media/usb/dvb-usb/dib0700_core.c
index f319665..5bb23ef 100644
--- a/drivers/media/usb/dvb-usb/dib0700_core.c
+++ b/drivers/media/usb/dvb-usb/dib0700_core.c
@@ -677,7 +677,7 @@  static void dib0700_rc_urb_completion(struct urb *purb)
 	struct dvb_usb_device *d = purb->context;
 	struct dib0700_rc_response *poll_reply;
 	enum rc_type protocol;
-	u32 uninitialized_var(keycode);
+	u32 keycode;
 	u8 toggle;
 
 	deb_info("%s()\n", __func__);
@@ -718,7 +718,8 @@  static void dib0700_rc_urb_completion(struct urb *purb)
 		    poll_reply->nec.data       == 0x00 &&
 		    poll_reply->nec.not_data   == 0xff) {
 			poll_reply->data_state = 2;
-			break;
+			rc_repeat(d->rc_dev);
+			goto resubmit;
 		}
 
 		if ((poll_reply->nec.data ^ poll_reply->nec.not_data) != 0xff) {