ALSA: line6/toneport: Move setup_timer() at the beginning
... so that timer_del_sync() in the destructor can be called safely at
any time. Also move the mod_timer() call in toneport_setup(), which
is a bit clearer place.
Tested-by: Chris Rorvick <chris@rorvick.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
diff --git a/sound/usb/line6/toneport.c b/sound/usb/line6/toneport.c
index e5669bd..fb6d5e1 100644
--- a/sound/usb/line6/toneport.c
+++ b/sound/usb/line6/toneport.c
@@ -360,6 +360,8 @@
if (toneport_has_led(toneport->type))
toneport_update_led(&usbdev->dev);
+
+ mod_timer(&toneport->timer, jiffies + TONEPORT_PCM_DELAY * HZ);
}
/*
@@ -390,6 +392,9 @@
int err;
struct usb_line6_toneport *toneport = (struct usb_line6_toneport *) line6;
+ setup_timer(&toneport->timer, toneport_start_pcm,
+ (unsigned long)toneport);
+
line6->disconnect = line6_toneport_disconnect;
/* initialize PCM subsystem: */
@@ -435,10 +440,6 @@
toneport_setup(toneport);
- setup_timer(&toneport->timer, toneport_start_pcm,
- (unsigned long)toneport);
- mod_timer(&toneport->timer, jiffies + TONEPORT_PCM_DELAY * HZ);
-
/* register audio system: */
return snd_card_register(line6->card);
}