struct kaweth_device *kaweth = urb->context;
        struct net_device *net = kaweth->net;
        int status = urb->status;
-
+       unsigned long flags;
        int count = urb->actual_length;
        int count2 = urb->transfer_buffer_length;
 
                net->stats.rx_errors++;
                dev_dbg(dev, "Status was -EOVERFLOW.\n");
        }
-       spin_lock(&kaweth->device_lock);
+       spin_lock_irqsave(&kaweth->device_lock, flags);
        if (IS_BLOCKED(kaweth->status)) {
-               spin_unlock(&kaweth->device_lock);
+               spin_unlock_irqrestore(&kaweth->device_lock, flags);
                return;
        }
-       spin_unlock(&kaweth->device_lock);
+       spin_unlock_irqrestore(&kaweth->device_lock, flags);
 
        if(status && status != -EREMOTEIO && count != 1) {
                dev_err(&kaweth->intf->dev,