unsigned long flags; spin_lock_irqsave(&foo_lock, flags); // critical jobs spin_unlock_irqrestore(&foo_lock, flags);