[PATCH 06/14] USB speedtouch: spin_lock_irqsave -> spin_lock_irq in tasklets

From: Duncan Sands (baldrick@wanadoo.fr)
Date: Tue May 20 2003 - 17:58:07 EST


Replace spin_lock_irqsave/spin_unlock_irqrestore with
spin_lock_irq/spin_unlock_irq in tasklet actions, since
these are always called with local irqs enabled.

 speedtch.c | 32 +++++++++++++++-----------------
 1 files changed, 15 insertions(+), 17 deletions(-)

diff -Nru a/drivers/usb/misc/speedtch.c b/drivers/usb/misc/speedtch.c
--- a/drivers/usb/misc/speedtch.c Wed May 21 00:40:26 2003
+++ b/drivers/usb/misc/speedtch.c Wed May 21 00:40:26 2003
@@ -526,7 +526,6 @@
 {
         struct udsl_instance_data *instance = (struct udsl_instance_data *) data;
         struct udsl_receiver *rcv;
- unsigned long flags;
         unsigned char *data_start;
         struct sk_buff *skb;
         struct urb *urb;
@@ -536,11 +535,11 @@
 
         dbg ("udsl_process_receive entered");
 
- spin_lock_irqsave (&instance->completed_receivers_lock, flags);
+ spin_lock_irq (&instance->completed_receivers_lock);
         while (!list_empty (&instance->completed_receivers)) {
                 rcv = list_entry (instance->completed_receivers.next, struct udsl_receiver, list);
                 list_del (&rcv->list);
- spin_unlock_irqrestore (&instance->completed_receivers_lock, flags);
+ spin_unlock_irq (&instance->completed_receivers_lock);
 
                 urb = rcv->urb;
                 dbg ("udsl_process_receive: got packet %p with length %d and status %d", urb, urb->actual_length, urb->status);
@@ -598,15 +597,15 @@
                         /* fall through */
                 default: /* error or urb unlinked */
                         dbg ("udsl_process_receive: adding to spare_receivers");
- spin_lock_irqsave (&instance->spare_receivers_lock, flags);
+ spin_lock_irq (&instance->spare_receivers_lock);
                         list_add (&rcv->list, &instance->spare_receivers);
- spin_unlock_irqrestore (&instance->spare_receivers_lock, flags);
+ spin_unlock_irq (&instance->spare_receivers_lock);
                         break;
                 } /* switch */
 
- spin_lock_irqsave (&instance->completed_receivers_lock, flags);
+ spin_lock_irq (&instance->completed_receivers_lock);
         } /* while */
- spin_unlock_irqrestore (&instance->completed_receivers_lock, flags);
+ spin_unlock_irq (&instance->completed_receivers_lock);
         dbg ("udsl_process_receive successful");
 }
 
@@ -676,7 +675,6 @@
 {
         struct udsl_send_buffer *buf;
         int err;
- unsigned long flags;
         struct udsl_instance_data *instance = (struct udsl_instance_data *) data;
         unsigned int num_written;
         struct sk_buff *skb;
@@ -685,7 +683,7 @@
         dbg ("udsl_process_send entered");
 
 made_progress:
- spin_lock_irqsave (&instance->send_lock, flags);
+ spin_lock_irq (&instance->send_lock);
         while (!list_empty (&instance->spare_senders)) {
                 if (!list_empty (&instance->filled_send_buffers)) {
                         buf = list_entry (instance->filled_send_buffers.next, struct udsl_send_buffer, list);
@@ -699,7 +697,7 @@
 
                 snd = list_entry (instance->spare_senders.next, struct udsl_sender, list);
                 list_del (&snd->list);
- spin_unlock_irqrestore (&instance->send_lock, flags);
+ spin_unlock_irq (&instance->send_lock);
 
                 snd->buffer = buf;
                 usb_fill_bulk_urb (snd->urb,
@@ -714,16 +712,16 @@
 
                 if ((err = usb_submit_urb(snd->urb, GFP_ATOMIC)) < 0) {
                         dbg ("submission failed (%d)!", err);
- spin_lock_irqsave (&instance->send_lock, flags);
+ spin_lock_irq (&instance->send_lock);
                         list_add (&snd->list, &instance->spare_senders);
- spin_unlock_irqrestore (&instance->send_lock, flags);
+ spin_unlock_irq (&instance->send_lock);
                         list_add (&buf->list, &instance->filled_send_buffers);
                         return;
                 }
 
- spin_lock_irqsave (&instance->send_lock, flags);
+ spin_lock_irq (&instance->send_lock);
         } /* while */
- spin_unlock_irqrestore (&instance->send_lock, flags);
+ spin_unlock_irq (&instance->send_lock);
 
         if (!instance->current_skb && !(instance->current_skb = skb_dequeue (&instance->sndqueue))) {
                 dbg ("done - no more skbs");
@@ -733,16 +731,16 @@
         skb = instance->current_skb;
 
         if (!(buf = instance->current_buffer)) {
- spin_lock_irqsave (&instance->send_lock, flags);
+ spin_lock_irq (&instance->send_lock);
                 if (list_empty (&instance->spare_send_buffers)) {
                         instance->current_buffer = NULL;
- spin_unlock_irqrestore (&instance->send_lock, flags);
+ spin_unlock_irq (&instance->send_lock);
                         dbg ("done - no more buffers");
                         return;
                 }
                 buf = list_entry (instance->spare_send_buffers.next, struct udsl_send_buffer, list);
                 list_del (&buf->list);
- spin_unlock_irqrestore (&instance->send_lock, flags);
+ spin_unlock_irq (&instance->send_lock);
 
                 buf->free_start = buf->base;
                 buf->free_cells = UDSL_SND_BUF_SIZE;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri May 23 2003 - 22:00:42 EST