Hi <div><br></div><div>I wrote a sample module which looked like this and i expected the module to hang as i have used 2 spin_lock simultaneously. But i find the print after the second spin_lock being printed and the module works perfectly fine. Can any body please help me in understanding this? I got this problem from a driver i wrote and had a typo &quot;spin_lock&quot; instead of &quot;spin_unlock&quot; the driver worked fine and i caught the mistake only during a review </div>
<div><br></div><div><div><i>#include &lt;linux/module.h&gt;</i></div><div><i>#include &lt;linux/spinlock.h&gt;</i></div><div><i><br></i></div><div><i>struct sp_q {</i></div><div><i>spinlock_t spinlock;</i></div><div><i>uint8_t data;</i></div>
<div><i>};</i></div><div><i><br></i></div><div><i>static int __init sp_lck_init(void)</i></div><div><i>{</i></div><div><i><br></i></div><div><i>   struct sp_q test;</i></div><div><i>   </i></div><div><i>   /* Spin lock Init */</i></div>
<div><i><br></i></div><div><i>   spin_lock_init(&amp;test.spinlock);</i></div><div><i>    </i></div><div><i>   printk(&quot;&lt;1&gt;Test start\n&quot;);</i></div><div><i>   </i></div><div><i>   spin_lock(&amp;test.spinlock);</i></div>
<div><i>   test.data = 0;   </i></div><div><i>   spin_lock(&amp;test.spinlock);   </i></div><div><i>   </i></div><div><i>   printk(&quot;&lt;1&gt;How come???\n&quot;);</i></div><div><i>   return 0;</i></div><div><i><br></i></div>
<div><i>}</i></div><div><i><br></i></div><div><i>static void __exit sp_lck_exit(void)</i></div><div><i>{</i></div><div><i><br></i></div><div><i>}</i></div><div><i><br></i></div><div><i>module_init(sp_lck_init);</i></div><div>
<i>module_exit(sp_lck_exit);</i></div><div><i>MODULE_LICENSE(&quot;GPL&quot;);</i></div></div><div><div><br></div>-- <br>Regards,<br><br>Prajosh Premdas<br>
</div>