On Mon, Mar 27, 2006 at 09:05:38AM -0700, Michael Downey wrote:
> Adrian Bunk wrote:
> 
> >gcc reported the following:
> >
> ><--  snip  -->
> >
> >...
> >  CC      drivers/usb/input/keyspan_remote.o
> >drivers/usb/input/keyspan_remote.c: In function 'keyspan_irq_recv':
> >drivers/usb/input/keyspan_remote.c:186: warning: 'message.toggle' may be 
> >used uninitialized in this function
> >...
> >
> ><--  snip  -->
> >
> >
> >gcc is right, there is an error case where this actually happens.
> >
> >What about this patch that returns in this error case?
> >
> >Signed-off-by: Darren Jenkins <[EMAIL PROTECTED]>
> >
> >--- linux-2.6.16-mm1-full/drivers/usb/input/keyspan_remote.c.old     
> >2006-03-25 15:44:56.000000000 +0100
> >+++ linux-2.6.16-mm1-full/drivers/usb/input/keyspan_remote.c 2006-03-25 
> >15:45:48.000000000 +0100
> >@@ -285,30 +285,31 @@ static void keyspan_check_data(struct us
> >                             return;
> >                     }
> >             }
> > 
> >             keyspan_load_tester(remote, 6);
> >             if ((remote->data.tester & ZERO_MASK) == ZERO) {
> >                     message.toggle = 0;
> >                     remote->data.tester = remote->data.tester >> 5;
> >                     remote->data.bits_left -= 5;
> >             } else if ((remote->data.tester & ONE_MASK) == ONE) {
> >                     message.toggle = 1;
> >                     remote->data.tester = remote->data.tester >> 6;
> >                     remote->data.bits_left -= 6;
> >             } else {
> >                     err("%s - Error in message, invalid toggle.\n", 
> > __FUNCTION__);
> >+                    return;
> >             }
> > 
> >             keyspan_load_tester(remote, 5);
> >             if ((remote->data.tester & STOP_MASK) == STOP) {
> >                     remote->data.tester = remote->data.tester >> 5;
> >                     remote->data.bits_left -= 5;
> >             } else {
> >                     err("Bad message recieved, no stop bit found.\n");
> >             }
> > 
> >             dev_dbg(&remote->udev->dev,
> >                     "%s found valid message: system: %d, button: %d, 
> > toggle: %d\n",
> >                     __FUNCTION__, message.system, message.button, 
> > message.toggle);
> > 
> >             if (message.toggle != remote->toggle) {
> >
> >
> >
> >-------------------------------------------------------
> >This SF.Net email is sponsored by xPML, a groundbreaking scripting language
> >that extends applications into web and mobile media. Attend the live webcast
> >and join the prime developer group breaking into this new coding territory!
> >http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
> >_______________________________________________
> >linux-usb-devel@lists.sourceforge.net
> >To unsubscribe, use the last form field at:
> >https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
> >  
> >
> My reasoning for not having the return was that it allowed the driver to
> finish reading the rest of the garbage message. It also won't reset the
> stage on the message back to 0 which is what we want.
> 
> So the change probably should be something like:
> 
>       } else {
>               err("%s - Error in message, invalid toggle.\n", __FUNCTION__);
> +             message->stage = 0;
> +             return;
>       }
> 
> 
> That will cause the next read to start again from the beginning. Other
> than that the change looks fine with me. I'll see if I can do some
> testing on the change this week. I probably should do a bit more review
> of that error case as I haven't really looked at the code in some time.

Ok, I'll drop this one and wait for a cleaned up and tested version from
you.

thanks,

greg k-h


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to