Rick Brown wrote:
Hi, In my driver (Process context), I have written the following code: -------------------------------------------- spin_lock(lock) ... //Critical section to manipulate driver data
... interrupt hits here interrupt handler tries to grab the spinlock, which is already taken *BOOM*
spin_u lock(lock) --------------------------------------------- I have written similar code in my interrupt handler (Interrupt context). The driver data is not accessed from anywhere else. Is my code safe from any potential concurrency issues? Is there a need to use spin_lock_irqsave()? In both the places?
You need to use spin_lock_irqsave() from process context. From the interrupt handler itself it doesn't hurt, but it shouldn't matter much since interrupt handlers should not get preempted. -- What is important? What you want to be true, or what is true? -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/