Commit 7d221856 authored by Kees Cook's avatar Kees Cook

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();

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: "Gustavo A. R. Silva" <garsilva@embeddedor.com>
Cc: linux-usb@vger.kernel.org
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 254db5bd
...@@ -575,11 +575,16 @@ alloc_sglist(int nents, int max, int vary, struct usbtest_dev *dev, int pipe) ...@@ -575,11 +575,16 @@ alloc_sglist(int nents, int max, int vary, struct usbtest_dev *dev, int pipe)
return sg; 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( static int perform_sglist(
...@@ -593,9 +598,11 @@ static int perform_sglist( ...@@ -593,9 +598,11 @@ static int perform_sglist(
{ {
struct usb_device *udev = testdev_to_usbdev(tdev); struct usb_device *udev = testdev_to_usbdev(tdev);
int retval = 0; 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) { while (retval == 0 && iterations-- > 0) {
retval = usb_sg_init(req, udev, pipe, retval = usb_sg_init(req, udev, pipe,
...@@ -606,13 +613,14 @@ static int perform_sglist( ...@@ -606,13 +613,14 @@ static int perform_sglist(
if (retval) if (retval)
break; break;
mod_timer(&sg_timer, jiffies + mod_timer(&timeout.timer, jiffies +
msecs_to_jiffies(SIMPLE_IO_TIMEOUT)); msecs_to_jiffies(SIMPLE_IO_TIMEOUT));
usb_sg_wait(req); usb_sg_wait(req);
if (!del_timer_sync(&sg_timer)) if (!del_timer_sync(&timeout.timer))
retval = -ETIMEDOUT; retval = -ETIMEDOUT;
else else
retval = req->status; retval = req->status;
destroy_timer_on_stack(&timeout.timer);
/* FIXME check resulting data pattern */ /* FIXME check resulting data pattern */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment