spin_lock behavior

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Hi 

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 "spin_lock" instead of "spin_unlock" the driver worked fine and i caught the mistake only during a review 

#include <linux/module.h>
#include <linux/spinlock.h>

struct sp_q {
spinlock_t spinlock;
uint8_t data;
};

static int __init sp_lck_init(void)
{

   struct sp_q test;
   
   /* Spin lock Init */

   spin_lock_init(&test.spinlock);
    
   printk("<1>Test start\n");
   
   spin_lock(&test.spinlock);
   test.data = ""   
   spin_lock(&test.spinlock);   
   
   printk("<1>How come???\n");
   return 0;

}

static void __exit sp_lck_exit(void)
{

}

module_init(sp_lck_init);
module_exit(sp_lck_exit);
MODULE_LICENSE("GPL");

--
Regards,

Prajosh Premdas
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Networking]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]

Add to Google Powered by Linux