Unlocking API The full unlocking API is: void spin_unlock(spinlock_t *lock); void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags); void spin_unlock_irq(spinlock_t *lock); void spin_unlock_bh(spinlock_t *lock); Use the one which matches the locking function There is also a reader/writer spinlock type rwlock_t See LDD3 for details