| .. | .. |
|---|
| 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++) { |
|---|