Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -575,11 +575,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(
@@ -593,9 +598,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,
@@ -606,13 +613,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 */