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