Messages in this thread | | | Date | Fri, 10 Sep 2010 14:04:46 +0300 | From | Jarkko Lavinen <> | Subject | MTD: mtd_blkdevs regression |
| |
In 2.6.34 modules using add_mtd_blktrans_dev() have reference count 0 after loading and I can remove the module if it is not being used.
In 2.6.34, using mtdblock as an example:
# modprobe nandsim # modprobe mtdblock # lsmod Module Size Used by mtdblock 2829 0 mtd_blkdevs 4217 1 mtdblock nandsim 25811 0 nand 27184 1 nandsim nand_ids 2666 2 nandsim,nand nand_ecc 3392 1 nand mtd 14794 5 mtd_blkdevs,nandsim,nand # rmmod mtdblock #
Since commit 048d871 (mtd: blktrans: Hotplug fixes) in 2.6.35-rc1 add_mtd_blktrans_dev() uses __get_module(tr->owner) to add reference count to calling module.
Because of this the module cannot be removed and since module exit cannot be called, del_mtd_blktrans_dev() will not be called, which would do the module_put().
In 2.6.35:
# modprobe nandsim # modprobe mtdblock # lsmod Module Size Used by mtdblock 2721 1 mtd_blkdevs 4895 1 mtdblock nandsim 25819 1 nand 28326 1 nandsim nand_ids 2698 2 nandsim,nand nand_ecc 3400 1 nand mtd 15352 5 mtd_blkdevs,nandsim,nand # rmmod mtdblock ERROR: Module mtdblock is in use #
Jarkko Lavinen
| |