Commit 2183c1a6 authored by Kees Cook's avatar Kees Cook Committed by David S. Miller
Browse files

net/usb/usbnet: 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. Since the callback is called from
both a timer and a tasklet, adjust the tasklet to pass the timer address
too. When tasklets have their .data field removed, this can be refactored
to call a central function after resolving the correct container_of() for a
separate callback function for timer and tasklet.

Cc: Oliver Neukum <oneukum@suse.com>
Cc: netdev@vger.kernel.org
Cc: linux-usb@vger.kernel.org
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Acked-by: default avatarOliver Neukum <oneukum@suse.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0010e3f8
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -1509,9 +1509,9 @@ err:

// tasklet (work deferred from completions, in_irq) or timer

static void usbnet_bh (unsigned long param)
static void usbnet_bh (struct timer_list *t)
{
	struct usbnet		*dev = (struct usbnet *) param;
	struct usbnet		*dev = from_timer(dev, t, delay);
	struct sk_buff		*skb;
	struct skb_data		*entry;

@@ -1694,13 +1694,11 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
	skb_queue_head_init (&dev->txq);
	skb_queue_head_init (&dev->done);
	skb_queue_head_init(&dev->rxq_pause);
	dev->bh.func = usbnet_bh;
	dev->bh.data = (unsigned long) dev;
	dev->bh.func = (void (*)(unsigned long))usbnet_bh;
	dev->bh.data = (unsigned long)&dev->delay;
	INIT_WORK (&dev->kevent, usbnet_deferred_kevent);
	init_usb_anchor(&dev->deferred);
	dev->delay.function = usbnet_bh;
	dev->delay.data = (unsigned long) dev;
	init_timer (&dev->delay);
	timer_setup(&dev->delay, usbnet_bh, 0);
	mutex_init (&dev->phy_mutex);
	mutex_init(&dev->interrupt_mutex);
	dev->interrupt_count = 0;