ChangeSet 1.1216, 2003/06/18 16:34:29-07:00, baldrick@wanadoo.fr [PATCH] USB speedtouch: spin_lock_irqsave -> spin_lock_irq in process context Replace spin_lock_irqsave/spin_unlock_irqrestore with spin_lock_irq/spin_unlock_irq in routines that are only called in process context. drivers/usb/speedtouch.c | 23 ++++++++++------------- 1 files changed, 10 insertions(+), 13 deletions(-) diff -Nru a/drivers/usb/speedtouch.c b/drivers/usb/speedtouch.c --- a/drivers/usb/speedtouch.c Wed Jun 18 17:36:11 2003 +++ b/drivers/usb/speedtouch.c Wed Jun 18 17:36:11 2003 @@ -614,15 +614,14 @@ static void udsl_fire_receivers (struct udsl_instance_data *instance) { struct list_head receivers, *pos, *n; - unsigned long flags; INIT_LIST_HEAD (&receivers); down (&instance->serialize); - spin_lock_irqsave (&instance->spare_receivers_lock, flags); + spin_lock_irq (&instance->spare_receivers_lock); list_splice_init (&instance->spare_receivers, &receivers); - spin_unlock_irqrestore (&instance->spare_receivers_lock, flags); + spin_unlock_irq (&instance->spare_receivers_lock); list_for_each_safe (pos, n, &receivers) { struct udsl_receiver *rcv = list_entry (pos, struct udsl_receiver, list); @@ -640,9 +639,9 @@ if (usb_submit_urb (rcv->urb) < 0) { dbg ("udsl_fire_receivers: submit failed!"); - spin_lock_irqsave (&instance->spare_receivers_lock, flags); + spin_lock_irq (&instance->spare_receivers_lock); list_move (pos, &instance->spare_receivers); - spin_unlock_irqrestore (&instance->spare_receivers_lock, flags); + spin_unlock_irq (&instance->spare_receivers_lock); } } @@ -785,11 +784,10 @@ static void udsl_cancel_send (struct udsl_instance_data *instance, struct atm_vcc *vcc) { - unsigned long flags; struct sk_buff *skb, *n; dbg ("udsl_cancel_send entered"); - spin_lock_irqsave (&instance->sndqueue.lock, flags); + spin_lock_irq (&instance->sndqueue.lock); for (skb = instance->sndqueue.next, n = skb->next; skb != (struct sk_buff *)&instance->sndqueue; skb = n, n = skb->next) if (UDSL_SKB (skb)->atm_data.vcc == vcc) { dbg ("popping skb 0x%p", skb); @@ -799,7 +797,7 @@ else kfree_skb (skb); } - spin_unlock_irqrestore (&instance->sndqueue.lock, flags); + spin_unlock_irq (&instance->sndqueue.lock); tasklet_disable (&instance->send_tasklet); if ((skb = instance->current_skb) && (UDSL_SKB (skb)->atm_data.vcc == vcc)) { @@ -1255,7 +1253,6 @@ { struct udsl_instance_data *instance = ptr; struct list_head *pos; - unsigned long flags; unsigned int count = 0; int result, i; @@ -1289,11 +1286,11 @@ do { unsigned int completed = 0; - spin_lock_irqsave (&instance->completed_receivers_lock, flags); + spin_lock_irq (&instance->completed_receivers_lock); list_for_each (pos, &instance->completed_receivers) if (++completed > count) panic (__FILE__ ": memory corruption detected at line %d!\n", __LINE__); - spin_unlock_irqrestore (&instance->completed_receivers_lock, flags); + spin_unlock_irq (&instance->completed_receivers_lock); dbg ("udsl_usb_disconnect: found %u completed receivers", completed); @@ -1329,11 +1326,11 @@ /* wait for completion handlers to finish */ do { count = 0; - spin_lock_irqsave (&instance->send_lock, flags); + spin_lock_irq (&instance->send_lock); list_for_each (pos, &instance->spare_senders) if (++count > UDSL_NUM_SND_URBS) panic (__FILE__ ": memory corruption detected at line %d!\n", __LINE__); - spin_unlock_irqrestore (&instance->send_lock, flags); + spin_unlock_irq (&instance->send_lock); dbg ("udsl_usb_disconnect: found %u spare senders", count);