ChangeSet 1.1117.2.2, 2003/02/28 13:34:06-08:00, baldrick@wanadoo.fr

[PATCH] USB speedtouch: don't race the tasklets


 drivers/usb/misc/speedtouch.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)


diff -Nru a/drivers/usb/misc/speedtouch.c b/drivers/usb/misc/speedtouch.c
--- a/drivers/usb/misc/speedtouch.c	Fri Feb 28 14:48:35 2003
+++ b/drivers/usb/misc/speedtouch.c	Fri Feb 28 14:48:35 2003
@@ -326,10 +326,10 @@
 
 	dbg ("udsl_complete_receive entered (urb 0x%p, status %d)", urb, urb->status);
 
-	tasklet_schedule (&instance->receive_tasklet);
 	/* may not be in_interrupt() */
 	spin_lock_irqsave (&instance->completed_receivers_lock, flags);
 	list_add_tail (&rcv->list, &instance->completed_receivers);
+	tasklet_schedule (&instance->receive_tasklet);
 	spin_unlock_irqrestore (&instance->completed_receivers_lock, flags);
 }
 
@@ -489,11 +489,11 @@
 
 	dbg ("udsl_complete_send entered (urb 0x%p, status %d)", urb, urb->status);
 
-	tasklet_schedule (&instance->send_tasklet);
 	/* may not be in_interrupt() */
 	spin_lock_irqsave (&instance->send_lock, flags);
 	list_add (&snd->list, &instance->spare_senders);
 	list_add (&snd->buffer->list, &instance->spare_buffers);
+	tasklet_schedule (&instance->send_tasklet);
 	spin_unlock_irqrestore (&instance->send_lock, flags);
 }
 
