usb: usbtest: Convert timers to use timer_setup()
PATCH 1/1 usb: usbtest: Convert timers to use timer_setup()
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly. Also adds missing call to destroy_timer_on_stack();
--- drivers/usb/misc/usbtest.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-)
drivers/usb/misc/usbtest.c +15 -7
@@ -576,11 +576,16 @@ alloc_sglist(int nents, int max, int vary, struct usbtest_dev *dev, int pipe)return sg; } -static void sg_timeout (unsigned long _req) +struct sg_timeout { +struct timer_list timer; +struct usb_sg_request *req; +}; + +static void sg_timeout (struct timer_list *t) { -struct usb_sg_request *req = (struct usb_sg_request *) _req; +struct sg_timeout *timeout =from_timer (timeout, t, timer); -usb_sg_cancel (req); +usb_sg_cancel (timeout->req); } static int perform_sglist(
@@ -594,9 +599,11 @@ static int perform_sglist( {struct usb_device *udev =testdev_to_usbdev (tdev);int retval =0 ; -struct timer_list sg_timer; +struct sg_timeout timeout = { + .req = req, + }; -setup_timer_on_stack (&sg_timer, sg_timeout, (unsigned long ) req); +timer_setup_on_stack (&timeout.timer, sg_timeout,0 );while (retval ==0 && iterations-- >0 ) { retval = usb_sg_init(req, udev, pipe,
@@ -607,13 +614,14 @@ static int perform_sglist(if (retval)break ; -mod_timer (&sg_timer, jiffies + +mod_timer (&timeout.timer, jiffies +msecs_to_jiffies (SIMPLE_IO_TIMEOUT ));usb_sg_wait (req); -if (!del_timer_sync (&sg_timer)) +if (!del_timer_sync (&timeout.timer)) retval = -ETIMEDOUT ;else retval = req->status; +destroy_timer_on_stack (&timeout.timer);/* FIXME check resulting data pattern */
Signature · 6 lines
2.7.4 -- Kees Cook Pixel Security
Quoted 11 lines · Kees Cook
In preparation for unconditionally passing the struct
timer_listpointer to all timer callbacks, switch to using the newtimer_setup()andfrom_timer()to pass the timer pointer explicitly. Also adds missing call todestroy_timer_on_stack();Cc Greg Kroah-Hartman <[email protected]>Cc Felipe Balbi <[email protected]>Cc Alan Stern <[email protected]>Cc "Gustavo A. R. Silva" <[email protected]>Signed-off-by Kees Cook <[email protected]>
Signature · 1 line
balbi
Sorry, I sent this one but forgot that timer_setup_on_stack() is in -next only. If it's okay, I can carry it in the timers tree.
Thanks!
-Kees
Quoted 18 lines · Felipe Balbi
Quoted 11 lines · Kees Cook
In preparation for unconditionally passing the struct
timer_listpointer to all timer callbacks, switch to using the newtimer_setup()andfrom_timer()to pass the timer pointer explicitly. Also adds missing call todestroy_timer_on_stack();Cc Greg Kroah-Hartman <[email protected]>Cc Felipe Balbi <[email protected]>Cc Alan Stern <[email protected]>Cc "Gustavo A. R. Silva" <[email protected]>Signed-off-by Kees Cook <[email protected]>Acked-by Felipe Balbi <[email protected]>--
balbi
Signature · 2 lines
Kees Cook Pixel Security
Quoted 2 lines · Kees Cook
Sorry, I sent this one but forgot that
timer_setup_on_stack()is in -next only. If it's okay, I can carry it in the timers tree.
That's fine with me: