Hi, We are using yaffs2 on a custom medical device for about a couple of years now without problems. We want to implement a new feature consisting of upgrading the whole system with an usb stick holding the new rootfs. For that I created a ramdisk and from there we do the following (as explained in http://www.ronetix.at/wiki.davincidsp.com/Put_YAFFS_Image_to_Flash.html#Writing_a_Tarball_Image) target$ flash_eraseall /dev/mtd3 target$ mount -t yaffs2 /dev/mtdblock3 /mnt target$ cd /mnt target$ tar xzf /rootfs.tar.gz The rootfs is about 90Mb (I forgot, we are using a 3.0 kernel). When untarring we get some deadlock problems. This is always reproducible, I mean we have not been able to do the untar and umount succesfully, either one or the other fails with a deadlock problem. I copy the traces below. The first problem is related with kswapd. I saw in the archives a similar report by Reed Lawson but it is from 2005 and relates to 2.x kernels. Of course there is no problem if we upgrade the rootfs from u-boot with nand write.yaffs. We’d appreciate any insight on this. Thanks. /mnt/rootfs/rootfs.tmp # tar xf /mnt/ramdisk/rootfs.yaffs2.tar.gz [ 514.446044] [ 514.446075] ========================================================= [ 514.454406] [ INFO: possible irq lock inversion dependency detected ] [ 514.461151] 3.0.101-BSP-dm37x-2.4-4 #7 [ 514.465087] --------------------------------------------------------- [ 514.471862] kswapd0/23 just changed the state of lock: [ 514.477233] (&(yaffs_dev_to_lc(dev)->gross_lock)){+.+.-.}, at: [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 514.487792] but this lock took another, RECLAIM_FS-unsafe lock in the past: [ 514.495086] (mtd_table_mutex){+.+.+.} [ 514.498840] [ 514.498840] and interrupts could create inverse lock ordering between them. [ 514.498840] [ 514.509429] [ 514.509460] other info that might help us debug this: [ 514.516296] Possible interrupt unsafe locking scenario: [ 514.516296] [ 514.523437] CPU0 CPU1 [ 514.528198] ---- ---- [ 514.532928] lock(mtd_table_mutex); [ 514.536682] local_irq_disable(); [ 514.542907] lock(&(yaffs_dev_to_lc(dev)->gross_lock)); [ 514.551116] lock(mtd_table_mutex); [ 514.557525] [ 514.560272] lock(&(yaffs_dev_to_lc(dev)->gross_lock)); [ 514.566040] [ 514.566040] *** DEADLOCK *** [ 514.566040] [ 514.572265] 2 locks held by kswapd0/23: [ 514.576293] #0: (shrinker_rwsem){++++..}, at: [] shrink_slab+0x2c/0x500 [ 514.584350] #1: (iprune_sem){++++.-}, at: [] shrink_icache_memory+0x40/0x36c [ 514.592864] [ 514.592864] the shortest dependencies between 2nd lock and 1st lock: [ 514.601104] -> (mtd_table_mutex){+.+.+.} ops: 13 { [ 514.606231] HARDIRQ-ON-W at: [ 514.609619] [] __lock_acquire+0x9f8/0x1b04 [ 514.618591] [] lock_acquire+0xa0/0x124 [ 514.627197] [] mutex_lock_nested+0x74/0x300 [ 514.636230] [] register_mtd_user+0x1c/0x78 [ 514.645202] [] init_mtdchar+0xc0/0xec [ 514.653717] [] do_one_initcall+0x34/0x174 [ 514.662597] [] kernel_init+0xa4/0x13c [ 514.671081] [] kernel_thread_exit+0x0/0x8 [ 514.679962] SOFTIRQ-ON-W at: [ 514.683349] [] __lock_acquire+0xa1c/0x1b04 [ 514.692321] [] lock_acquire+0xa0/0x124 [ 514.700897] [] mutex_lock_nested+0x74/0x300 [ 514.709960] [] register_mtd_user+0x1c/0x78 [ 514.718902] [] init_mtdchar+0xc0/0xec [ 514.727416] [] do_one_initcall+0x34/0x174 [ 514.736297] [] kernel_init+0xa4/0x13c [ 514.744781] [] kernel_thread_exit+0x0/0x8 [ 514.753662] RECLAIM_FS-ON-W at: [ 514.757324] [] mark_held_locks+0x4c/0x84 [ 514.766357] [] lockdep_trace_alloc+0x90/0xf4 [ 514.775787] [] kmem_cache_alloc_trace+0x30/0x15c [ 514.785552] [] register_blkdev+0x78/0x164 [ 514.794708] [] register_mtd_blktrans+0x38/0x124 [ 514.804382] [] do_one_initcall+0x34/0x174 [ 514.813537] [] kernel_init+0xa4/0x13c [ 514.822296] [] kernel_thread_exit+0x0/0x8 [ 514.831451] INITIAL USE at: [ 514.834747] [] __lock_acquire+0x354/0x1b04 [ 514.843597] [] lock_acquire+0xa0/0x124 [ 514.852111] [] mutex_lock_nested+0x74/0x300 [ 514.861083] [] register_mtd_user+0x1c/0x78 [ 514.869934] [] init_mtdchar+0xc0/0xec [ 514.878356] [] do_one_initcall+0x34/0x174 [ 514.887115] [] kernel_init+0xa4/0x13c [ 514.895538] [] kernel_thread_exit+0x0/0x8 [ 514.904296] } [ 514.906127] ... key at: [] mtd_table_mutex+0x40/0x58 [ 514.912902] ... acquired at: [ 514.916107] [] lock_acquire+0xa0/0x124 [ 514.921234] [] mutex_lock_nested+0x74/0x300 [ 514.926818] [] put_mtd_device+0x18/0x30 [ 514.932037] [] yaffs_put_super+0x9c/0x140 [ 514.937438] [] generic_shutdown_super+0x84/0x100 [ 514.943450] [] kill_block_super+0x18/0x68 [ 514.948852] [] deactivate_locked_super+0x40/0x58 [ 514.954895] [] sys_umount+0x6c/0x360 [ 514.959838] [] ret_fast_syscall+0x0/0x3c [ 514.965148] [ 514.966705] -> (&(yaffs_dev_to_lc(dev)->gross_lock)){+.+.-.} ops: 90267 { [ 514.973846] HARDIRQ-ON-W at: [ 514.977142] [] __lock_acquire+0x9f8/0x1b04 [ 514.985931] [] lock_acquire+0xa0/0x124 [ 514.994323] [] mutex_lock_nested+0x74/0x300 [ 515.003204] [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 515.012512] [] yaffs_internal_read_super.isra.10+0x888/0xda4 [ 515.022949] [] yaffs2_internal_read_super_mtd+0x18/0x28 [ 515.032897] [] mount_bdev+0x174/0x1a0 [ 515.041229] [] yaffs2_mount+0x18/0x20 [ 515.049560] [] mount_fs+0x44/0x18c [ 515.057586] [] vfs_kern_mount+0x4c/0x8c [ 515.066101] [] do_kern_mount+0x34/0xd4 [ 515.074493] [] do_mount+0x2f0/0x718 [ 515.082641] [] sys_mount+0x84/0xc4 [ 515.090698] [] ret_fast_syscall+0x0/0x3c [ 515.099273] SOFTIRQ-ON-W at: [ 515.102569] [] __lock_acquire+0xa1c/0x1b04 [ 515.111358] [] lock_acquire+0xa0/0x124 [ 515.119750] [] mutex_lock_nested+0x74/0x300 [ 515.128631] [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 515.137939] [] yaffs_internal_read_super.isra.10+0x888/0xda4 [ 515.148376] [] yaffs2_internal_read_super_mtd+0x18/0x28 [ 515.158325] [] mount_bdev+0x174/0x1a0 [ 515.166656] [] yaffs2_mount+0x18/0x20 [ 515.174957] [] mount_fs+0x44/0x18c [ 515.183013] [] vfs_kern_mount+0x4c/0x8c [ 515.191528] [] do_kern_mount+0x34/0xd4 [ 515.199920] [] do_mount+0x2f0/0x718 [ 515.208068] [] sys_mount+0x84/0xc4 [ 515.216094] [] ret_fast_syscall+0x0/0x3c [ 515.224700] IN-RECLAIM_FS-W at: [ 515.228271] [] __lock_acquire+0xad0/0x1b04 [ 515.237335] [] lock_acquire+0xa0/0x124 [ 515.246002] [] mutex_lock_nested+0x74/0x300 [ 515.255126] [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 515.264739] [] yaffs_evict_inode+0x5c/0x100 [ 515.273864] [] evict+0x70/0x170 [ 515.281921] [] dispose_list+0x34/0x44 [ 515.290527] [] shrink_icache_memory+0x170/0x36c [ 515.300018] [] shrink_slab+0x194/0x500 [ 515.308715] [] kswapd+0x9f4/0xe30 [ 515.316925] [] kthread+0x84/0x88 [ 515.325073] [] kernel_thread_exit+0x0/0x8 [ 515.334045] INITIAL USE at: [ 515.337249] [] __lock_acquire+0x354/0x1b04 [ 515.345916] [] lock_acquire+0xa0/0x124 [ 515.354248] [] mutex_lock_nested+0x74/0x300 [ 515.363006] [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 515.372253] [] yaffs_internal_read_super.isra.10+0x888/0xda4 [ 515.382568] [] yaffs2_internal_read_super_mtd+0x18/0x28 [ 515.392456] [] mount_bdev+0x174/0x1a0 [ 515.400665] [] yaffs2_mount+0x18/0x20 [ 515.408905] [] mount_fs+0x44/0x18c [ 515.416870] [] vfs_kern_mount+0x4c/0x8c [ 515.425262] [] do_kern_mount+0x34/0xd4 [ 515.433593] [] do_mount+0x2f0/0x718 [ 515.441650] [] sys_mount+0x84/0xc4 [ 515.449584] [] ret_fast_syscall+0x0/0x3c [ 515.458099] } [ 515.459838] ... key at: [] __key.25088+0x0/0x8 [ 515.465972] ... acquired at: [ 515.469085] [] check_usage_forwards+0x138/0x14c [ 515.475036] [] mark_lock+0x1e4/0x6f4 [ 515.479980] [] __lock_acquire+0xad0/0x1b04 [ 515.485443] [] lock_acquire+0xa0/0x124 [ 515.490570] [] mutex_lock_nested+0x74/0x300 [ 515.496154] [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 515.502197] [] yaffs_evict_inode+0x5c/0x100 [ 515.507781] [] evict+0x70/0x170 [ 515.512268] [] dispose_list+0x34/0x44 [ 515.517303] [] shrink_icache_memory+0x170/0x36c [ 515.523223] [] shrink_slab+0x194/0x500 [ 515.528350] [] kswapd+0x9f4/0xe30 [ 515.533020] [] kthread+0x84/0x88 [ 515.537597] [] kernel_thread_exit+0x0/0x8 [ 515.542999] [ 515.544555] [ 515.544555] stack backtrace: [ 515.549133] [] (unwind_backtrace+0x0/0x138) from [] (prin [ 515.560302] [] (print_irq_inversion_bug.part.34+0x1e4/0x228) from [ [ 515.571990] [] (check_usage_forwards+0x138/0x14c) from [] [ 515.581695] [] (mark_lock+0x1e4/0x6f4) from [] (__lock_ac [ 515.590911] [] (__lock_acquire+0xad0/0x1b04) from [] (loc [ 515.600341] [] (lock_acquire+0xa0/0x124) from [] (mutex_l [ 515.609832] [] (mutex_lock_nested+0x74/0x300) from [] (ya [ 515.620269] [] (yaffs_gross_lock.isra.2+0x2c/0x78) from [ [ 515.630676] [] (yaffs_evict_inode+0x5c/0x100) from [] (ev [ 515.639556] [] (evict+0x70/0x170) from [] (dispose_list+0 [ 515.647857] [] (dispose_list+0x34/0x44) from [] (shrink_i [ 515.657653] [] (shrink_icache_memory+0x170/0x36c) from [] [ 515.667510] [] (shrink_slab+0x194/0x500) from [] (kswapd+ [ 515.676116] [] (kswapd+0x9f4/0xe30) from [] (kthread+0x84 [ 515.684173] [] (kthread+0x84/0x88) from [] (kernel_thread /mnt/rootfs/rootfs.tmp # /mnt/usb # tar xf rootfs.yaffs2.tar.gz -C /mnt/rootfs/ /mnt/usb # #Notice that tar ends ok. /mnt/usb # umount /mnt/rootfs/ [ 1054.577423] [ 1054.577453] ====================================================== [ 1054.585601] [ INFO: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected ] [ 1054.593231] 3.0.101-BSP-dm37x-2.4-4 #7 [ 1054.597198] ------------------------------------------------------ [ 1054.603759] umount/95 [HC0[0]:SC0[0]:HE1:SE1] is trying to acquire: [ 1054.610412] (mtd_table_mutex){+.+.+.}, at: [] put_mtd_device+0x18/0x30 [ 1054.618408] [ 1054.618408] and this task is already holding: [ 1054.624603] (&(yaffs_dev_to_lc(dev)->gross_lock)){+.+.-.}, at: [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 1054.635223] which would create a new lock dependency: [ 1054.640594] (&(yaffs_dev_to_lc(dev)->gross_lock)){+.+.-.} -> (mtd_table_mutex){+.+.+.} [ 1054.649108] [ 1054.649108] but this new dependency connects a RECLAIM_FS-irq-safe lock: [ 1054.657775] (&(yaffs_dev_to_lc(dev)->gross_lock)){+.+.-.} [ 1054.663421] ... which became RECLAIM_FS-irq-safe at: [ 1054.668853] [] __lock_acquire+0xad0/0x1b04 [ 1054.674346] [] lock_acquire+0xa0/0x124 [ 1054.679443] [] mutex_lock_nested+0x74/0x300 [ 1054.684997] [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 1054.691009] [] yaffs_evict_inode+0x5c/0x100 [ 1054.696563] [] evict+0x70/0x170 [ 1054.701019] [] dispose_list+0x34/0x44 [ 1054.706024] [] shrink_icache_memory+0x170/0x36c [ 1054.711944] [] shrink_slab+0x194/0x500 [ 1054.717041] [] try_to_free_pages+0x1e8/0x3ec [ 1054.722686] [] __alloc_pages_nodemask+0x418/0x6a0 [ 1054.728790] [] __do_page_cache_readahead+0x33c/0x718 [ 1054.735168] [] ra_submit+0x28/0x30 [ 1054.739898] [] generic_file_aio_read+0x5ac/0x804 [ 1054.745910] [] do_sync_read+0xa4/0xe4 [ 1054.750915] [] vfs_read+0xa4/0x134 [ 1054.755645] [] sys_read+0x40/0x6c [ 1054.760284] [] ret_fast_syscall+0x0/0x3c [ 1054.765563] [ 1054.765563] to a RECLAIM_FS-irq-unsafe lock: [ 1054.771667] (mtd_table_mutex){+.+.+.} [ 1054.775451] ... which became RECLAIM_FS-irq-unsafe at: [ 1054.781097] ... [] mark_held_locks+0x4c/0x84 [ 1054.786651] [] lockdep_trace_alloc+0x90/0xf4 [ 1054.792297] [] kmem_cache_alloc_trace+0x30/0x15c [ 1054.798309] [] register_blkdev+0x78/0x164 [ 1054.803710] [] register_mtd_blktrans+0x38/0x124 [ 1054.809631] [] do_one_initcall+0x34/0x174 [ 1054.815002] [] kernel_init+0xa4/0x13c [ 1054.820007] [] kernel_thread_exit+0x0/0x8 [ 1054.825378] [ 1054.825378] other info that might help us debug this: [ 1054.825408] [ 1054.833862] Possible interrupt unsafe locking scenario: [ 1054.833892] [ 1054.841064] CPU0 CPU1 [ 1054.845855] ---- ---- [ 1054.850646] lock(mtd_table_mutex); [ 1054.854461] local_irq_disable(); [ 1054.860717] lock(&(yaffs_dev_to_lc(dev)->gross_lock)); [ 1054.869049] lock(mtd_table_mutex); [ 1054.875518] [ 1054.878295] lock(&(yaffs_dev_to_lc(dev)->gross_lock)); [ 1054.884124] [ 1054.884124] *** DEADLOCK *** [ 1054.884124] [ 1054.890411] 2 locks held by umount/95: [ 1054.894378] #0: (&type->s_umount_key#19){++++..}, at: [] deactivate_super+0x50/0x60 [ 1054.903656] #1: (&(yaffs_dev_to_lc(dev)->gross_lock)){+.+.-.}, at: [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 1054.914764] [ 1054.914764] the dependencies between RECLAIM_FS-irq-safe lock and the holding lock: [ 1054.924499] -> (&(yaffs_dev_to_lc(dev)->gross_lock)){+.+.-.} ops: 124451 { [ 1054.931823] HARDIRQ-ON-W at: [ 1054.935180] [] __lock_acquire+0x9f8/0x1b04 [ 1054.944030] [] lock_acquire+0xa0/0x124 [ 1054.952545] [] mutex_lock_nested+0x74/0x300 [ 1054.961486] [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 1054.970916] [] yaffs_internal_read_super.isra.10+0x888/0xda4 [ 1054.981445] [] yaffs2_internal_read_super_mtd+0x18/0x28 [ 1054.991485] [] mount_bdev+0x174/0x1a0 [ 1054.999908] [] yaffs2_mount+0x18/0x20 [ 1055.008300] [] mount_fs+0x44/0x18c [ 1055.016448] [] vfs_kern_mount+0x4c/0x8c [ 1055.025024] [] do_kern_mount+0x34/0xd4 [ 1055.033538] [] do_mount+0x2f0/0x718 [ 1055.041748] [] sys_mount+0x84/0xc4 [ 1055.049896] [] ret_fast_syscall+0x0/0x3c [ 1055.058563] SOFTIRQ-ON-W at: [ 1055.061889] [] __lock_acquire+0xa1c/0x1b04 [ 1055.070770] [] lock_acquire+0xa0/0x124 [ 1055.079254] [] mutex_lock_nested+0x74/0x300 [ 1055.088226] [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 1055.097656] [] yaffs_internal_read_super.isra.10+0x888/0xda4 [ 1055.108154] [] yaffs2_internal_read_super_mtd+0x18/0x28 [ 1055.118225] [] mount_bdev+0x174/0x1a0 [ 1055.126647] [] yaffs2_mount+0x18/0x20 [ 1055.135040] [] mount_fs+0x44/0x18c [ 1055.143157] [] vfs_kern_mount+0x4c/0x8c [ 1055.151763] [] do_kern_mount+0x34/0xd4 [ 1055.160247] [] do_mount+0x2f0/0x718 [ 1055.168457] [] sys_mount+0x84/0xc4 [ 1055.176605] [] ret_fast_syscall+0x0/0x3c [ 1055.185272] IN-RECLAIM_FS-W at: [ 1055.188903] [] __lock_acquire+0xad0/0x1b04 [ 1055.198028] [] lock_acquire+0xa0/0x124 [ 1055.206817] [] mutex_lock_nested+0x74/0x300 [ 1055.216033] [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 1055.225738] [] yaffs_evict_inode+0x5c/0x100 [ 1055.234954] [] evict+0x70/0x170 [ 1055.243103] [] dispose_list+0x34/0x44 [ 1055.251770] [] shrink_icache_memory+0x170/0x36c [ 1055.261383] [] shrink_slab+0x194/0x500 [ 1055.270141] [] try_to_free_pages+0x1e8/0x3ec [ 1055.279479] [] __alloc_pages_nodemask+0x418/0x6a0 [ 1055.289245] [] __do_page_cache_readahead+0x33c/0x718 [ 1055.299316] [] ra_submit+0x28/0x30 [ 1055.307708] [] generic_file_aio_read+0x5ac/0x804 [ 1055.317413] [] do_sync_read+0xa4/0xe4 [ 1055.326080] [] vfs_read+0xa4/0x134 [ 1055.334472] [] sys_read+0x40/0x6c [ 1055.342803] [] ret_fast_syscall+0x0/0x3c [ 1055.351745] INITIAL USE at: [ 1055.354980] [] __lock_acquire+0x354/0x1b04 [ 1055.363769] [] lock_acquire+0xa0/0x124 [ 1055.372161] [] mutex_lock_nested+0x74/0x300 [ 1055.381042] [] yaffs_gross_lock.isra.2+0x2c/0x78 [ 1055.390350] [] yaffs_internal_read_super.isra.10+0x888/0xda4 [ 1055.400787] [] yaffs2_internal_read_super_mtd+0x18/0x28 [ 1055.410766] [] mount_bdev+0x174/0x1a0 [ 1055.419067] [] yaffs2_mount+0x18/0x20 [ 1055.427398] [] mount_fs+0x44/0x18c [ 1055.435424] [] vfs_kern_mount+0x4c/0x8c [ 1055.443939] [] do_kern_mount+0x34/0xd4 [ 1055.452331] [] do_mount+0x2f0/0x718 [ 1055.460449] [] sys_mount+0x84/0xc4 [ 1055.468505] [] ret_fast_syscall+0x0/0x3c [ 1055.477081] } [ 1055.478851] ... key at: [] __key.25088+0x0/0x8 [ 1055.485046] ... acquired at: [ 1055.488189] [] check_irq_usage+0x58/0xb4 [ 1055.493560] [] __lock_acquire+0xed0/0x1b04 [ 1055.499114] [] lock_acquire+0xa0/0x124 [ 1055.504302] [] mutex_lock_nested+0x74/0x300 [ 1055.509948] [] put_mtd_device+0x18/0x30 [ 1055.515228] [] yaffs_put_super+0x9c/0x140 [ 1055.520690] [] generic_shutdown_super+0x84/0x100 [ 1055.526794] [] kill_block_super+0x18/0x68 [ 1055.532257] [] deactivate_locked_super+0x40/0x58 [ 1055.538360] [] sys_umount+0x6c/0x360 [ 1055.543365] [] ret_fast_syscall+0x0/0x3c [ 1055.548736] [ 1055.550323] [ 1055.550323] the dependencies between the lock to be acquired and RECLAIM_FS-irq-unsafe lock: [ 1055.560852] -> (mtd_table_mutex){+.+.+.} ops: 14 { [ 1055.565979] HARDIRQ-ON-W at: [ 1055.569305] [] __lock_acquire+0x9f8/0x1b04 [ 1055.578186] [] lock_acquire+0xa0/0x124 [ 1055.586669] [] mutex_lock_nested+0x74/0x300 [ 1055.595642] [] register_mtd_user+0x1c/0x78 [ 1055.604492] [] init_mtdchar+0xc0/0xec [ 1055.612915] [] do_one_initcall+0x34/0x174 [ 1055.621704] [] kernel_init+0xa4/0x13c [ 1055.630096] [] kernel_thread_exit+0x0/0x8 [ 1055.638854] SOFTIRQ-ON-W at: [ 1055.642211] [] __lock_acquire+0xa1c/0x1b04 [ 1055.651062] [] lock_acquire+0xa0/0x124 [ 1055.659576] [] mutex_lock_nested+0x74/0x300 [ 1055.668518] [] register_mtd_user+0x1c/0x78 [ 1055.677398] [] init_mtdchar+0xc0/0xec [ 1055.685791] [] do_one_initcall+0x34/0x174 [ 1055.694549] [] kernel_init+0xa4/0x13c [ 1055.702972] [] kernel_thread_exit+0x0/0x8 [ 1055.711730] RECLAIM_FS-ON-W at: [ 1055.715362] [] mark_held_locks+0x4c/0x84 [ 1055.724304] [] lockdep_trace_alloc+0x90/0xf4 [ 1055.733642] [] kmem_cache_alloc_trace+0x30/0x15c [ 1055.743316] [] register_blkdev+0x78/0x164 [ 1055.752380] [] register_mtd_blktrans+0x38/0x124 [ 1055.761993] [] do_one_initcall+0x34/0x174 [ 1055.771026] [] kernel_init+0xa4/0x13c [ 1055.779693] [] kernel_thread_exit+0x0/0x8 [ 1055.788757] INITIAL USE at: [ 1055.791992] [] __lock_acquire+0x354/0x1b04 [ 1055.800781] [] lock_acquire+0xa0/0x124 [ 1055.809173] [] mutex_lock_nested+0x74/0x300 [ 1055.818054] [] register_mtd_user+0x1c/0x78 [ 1055.826812] [] init_mtdchar+0xc0/0xec [ 1055.835144] [] do_one_initcall+0x34/0x174 [ 1055.843811] [] kernel_init+0xa4/0x13c [ 1055.852111] [] kernel_thread_exit+0x0/0x8 [ 1055.860809] } [ 1055.862579] ... key at: [] mtd_table_mutex+0x40/0x58 [ 1055.869323] ... acquired at: [ 1055.872467] [] check_irq_usage+0x58/0xb4 [ 1055.877838] [] __lock_acquire+0xed0/0x1b04 [ 1055.883392] [] lock_acquire+0xa0/0x124 [ 1055.888580] [] mutex_lock_nested+0x74/0x300 [ 1055.894226] [] put_mtd_device+0x18/0x30 [ 1055.899505] [] yaffs_put_super+0x9c/0x140 [ 1055.904968] [] generic_shutdown_super+0x84/0x100 [ 1055.911071] [] kill_block_super+0x18/0x68 [ 1055.916534] [] deactivate_locked_super+0x40/0x58 [ 1055.922637] [] sys_umount+0x6c/0x360 [ 1055.927642] [] ret_fast_syscall+0x0/0x3c [ 1055.933013] [ 1055.934600] [ 1055.934600] stack backtrace: [ 1055.939239] [] (unwind_backtrace+0x0/0x138) from [] (check_usage+0x47c/0x5d8) [ 1055.948669] [] (check_usage+0x47c/0x5d8) from [] (check_irq_usage+0x58/0xb4) [ 1055.958007] [] (check_irq_usage+0x58/0xb4) from [] (__lock_acquire+0xed0/0x1b04) [ 1055.967712] [] (__lock_acquire+0xed0/0x1b04) from [] (lock_acquire+0xa0/0x124) [ 1055.977233] [] (lock_acquire+0xa0/0x124) from [] (mutex_lock_nested+0x74/0x300) [ 1055.986816] [] (mutex_lock_nested+0x74/0x300) from [] (put_mtd_device+0x18/0x30) [ 1055.996520] [] (put_mtd_device+0x18/0x30) from [] (yaffs_put_super+0x9c/0x140) [ 1056.006042] [] (yaffs_put_super+0x9c/0x140) from [] (generic_shutdown_super+0x84/0x100) [ 1056.016387] [] (generic_shutdown_super+0x84/0x100) from [] (kill_block_super+0x18/0x68) [ 1056.026733] [] (kill_block_super+0x18/0x68) from [] (deactivate_locked_super+0x40/0x58) [ 1056.037048] [] (deactivate_locked_super+0x40/0x58) from [] (sys_umount+0x6c/0x360) [ 1056.046936] [] (sys_umount+0x6c/0x360) from [] (ret_fast_syscall+0x0/0x3c)