Query on unregister_mtd_chip_driver

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

 



Hi everyone,

>From what I read in drivers/mtd/chips/chipreg.c, unregister_mtd_chip_driver
would disable preemptiveness, and do a spin_lock, and then remove drv->list
by repointing the previous and next nodes, and then do a spin_unlock.

However, from what I noticed in drivers/mtd/chips/sharp.c, it does a 
unregister_mtd_chip_driver(&sharp_chipdrv), which looks all right, but the
sharp_chipdrv static structure did not initialise the struct list_head list entry in
struct mtd_chip_driver.

/* drivers/mtd/chips/sharp.c */
100: static struct mtd_chip_driver sharp_chipdrv = {
101:         .probe                = sharp_probe,
102:         .destroy        = sharp_destroy,
103:         .name                = "sharp",
104:         .module                = THIS_MODULE
105: };

/* include/linux/list.h */
136 static inline void list_del(struct list_head *entry)
137 {
138         __list_del(entry->prev, entry->next);
139 }

/* include/linux/list.h */
124 static inline void __list_del(struct list_head * prev, struct list_head * next)
125 {
126         next->prev = prev;
127         prev->next = next;
128 }

What would list_del do? Since it does not check if entry is NULL. Please 
enlighten!

Using kernel 2.5.68 on x86.

Cheers,
Eugene
--
:(){(:|:)&};: 


--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux