On Fri, 19 October 2007 20:31:29 +0200, Peter Zijlstra wrote:Root cause is an ordering problem in module loading. Code flow is roughly this: sys_init_module `-> load_module : `-> parse_args : `-> block2mtd_setup : `-> __mutex_init : `-> lockdep_init_map : `-> static_obj : `-> is_module_address `-> __link_module is_module_address() would return something sane, if __link_module() had already been called. In fact, if the parameter is passed through /sys/modules/block2mtd/parameters/block2mtd _after_ module load time, the exact same code works fine. Only when passing the parameter as a module parameter do we see this problem. So what should be done? We could move parse_args() below __link_module(), but I'd guess such a change would break some other modules what depend on certain parameters or at least should fail to load with illegal parameters. Do such modules exist? Or we could add some kind of parse_args_late() that is called after __link_module(), if requested by a module, and annotate block2mtd to prefer that version. [ Adding Ingo on Cc:. Since block2mtd predates lockdep I found a bug in his code and not the other way around. ;) ] Jörn -- Do not stop an army on its way home. -- Sun Tzu -
| Linus Torvalds | Linux 2.6.21-rc4 |
| Jens Axboe | [PATCH 0/8] IO queuing and complete affinity |
| Nicholas A. Bellinger | Re: Integration of SCST in the mainstream Linux kernel |
| Robin Lee Powell | NFS hang + umount -f: better behaviour requested. |
git: | |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Ingo Molnar | Re: [crash] BUG: unable to handle kernel NULL pointer dereference at 0000000000000... |
| Gerrit Renker | [PATCH 19/37] dccp: Header option insertion routine for feature-negotiation |
| Gary Thomas | Marvell 88E609x switch? |
| Jamie Lokier | Re: silent semantic changes with reiser4 |
| Jan Kara | [PATCH 10/16] ext4: Remove syncing logic from ext4_file_write |
| Jack Stone | Re: Versioning file system |
| Jens Axboe | [PATCH 8/8] vm: Add an tuning knob for vm.max_writeback_pages |
