.. | .. |
---|
777 | 777 | static void em28xx_irq_callback(struct urb *urb) |
---|
778 | 778 | { |
---|
779 | 779 | struct em28xx *dev = urb->context; |
---|
| 780 | + unsigned long flags; |
---|
780 | 781 | int i; |
---|
781 | 782 | |
---|
782 | 783 | switch (urb->status) { |
---|
.. | .. |
---|
793 | 794 | } |
---|
794 | 795 | |
---|
795 | 796 | /* Copy data from URB */ |
---|
796 | | - spin_lock(&dev->slock); |
---|
| 797 | + spin_lock_irqsave(&dev->slock, flags); |
---|
797 | 798 | dev->usb_ctl.urb_data_copy(dev, urb); |
---|
798 | | - spin_unlock(&dev->slock); |
---|
| 799 | + spin_unlock_irqrestore(&dev->slock, flags); |
---|
799 | 800 | |
---|
800 | 801 | /* Reset urb buffers */ |
---|
801 | 802 | for (i = 0; i < urb->number_of_packets; i++) { |
---|