Hello all, I have a custom board based on Freescale i.MX6DL, and at start time i received a JFFS2 deadlock. My kernel version is v3.14.19 Regards Ivan Grimaldi ---- ====================================================== [ INFO: possible circular locking dependency detected ] 3.14.19-g849ea74-dirty #11 Not tainted ------------------------------------------------------- rc/49 is trying to acquire lock: (&mm->mmap_sem){++++++}, at: [<800c0928>] might_fault+0x44/0x94 but task is already holding lock: (&f->sem){+.+.+.}, at: [<8018cff8>] jffs2_readdir+0x44/0x1d0 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&f->sem){+.+.+.}: [<80464ec0>] mutex_lock_nested+0x58/0x3dc [<8018e9dc>] jffs2_readpage+0x28/0x54 [<800aca40>] __do_page_cache_readahead+0x304/0x330 [<800ad108>] ra_submit+0x30/0x38 [<800a3ba0>] filemap_fault+0x458/0x528 [<800c03e0>] __do_fault+0x70/0x4b0 [<800c3bf0>] handle_mm_fault+0x11c/0x8d0 [<8001ae58>] do_page_fault+0x1f0/0x3cc [<8001b18c>] do_translation_fault+0xb4/0xb8 [<80008458>] do_DataAbort+0x40/0xa0 [<80012e9c>] __dabt_svc+0x3c/0x60 [<8012a45c>] load_elf_binary+0x12fc/0x1364 [<800e34bc>] search_binary_handler+0x8c/0x1cc [<800e48d8>] do_execve+0x4a8/0x588 [<8000882c>] run_init_process+0x2c/0x30 [<80008844>] try_to_run_init_process+0x14/0x44 [<8045c338>] kernel_init+0xa8/0xf8 [<8000e948>] ret_from_fork+0x14/0x2c -> #0 (&mm->mmap_sem){++++++}: [<800629e8>] lock_acquire+0x70/0x84 [<800c0950>] might_fault+0x6c/0x94 [<800ef774>] filldir64+0x4c/0x184 [<8018d088>] jffs2_readdir+0xd4/0x1d0 [<800ef580>] iterate_dir+0x7c/0xa8 [<800efa1c>] SyS_getdents64+0x80/0xf0 [<8000e880>] ret_fast_syscall+0x0/0x48 other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&f->sem); lock(&mm->mmap_sem); lock(&f->sem); lock(&mm->mmap_sem); *** DEADLOCK *** 2 locks held by rc/49: #0: (&type->i_mutex_dir_key){+.+.+.}, at: [<800ef53c>] iterate_dir+0x38/0xa8 #1: (&f->sem){+.+.+.}, at: [<8018cff8>] jffs2_readdir+0x44/0x1d0 stack backtrace: CPU: 1 PID: 49 Comm: rc Not tainted 3.14.19-g849ea74-dirty #11 Backtrace: [<800120e0>] (dump_backtrace) from [<800123bc>] (show_stack+0x18/0x1c) r6:806e9970 r5:00000000 r4:80615004 r3:00000000 [<800123a4>] (show_stack) from [<804619a0>] (dump_stack+0x88/0x98) [<80461918>] (dump_stack) from [<8045fb98>] (print_circular_bug+0x300/0x30c) r5:806ea0e0 r4:806ea0e0 [<8045f898>] (print_circular_bug) from [<80061b28>] (__lock_acquire+0x16e0/0x1da4) r10:00000002 r9:806cd6f0 r8:80b6479c r7:bf3659e0 r6:bf3659e0 r5:80b1e36c r4:bf3659c8 r3:bf3659c8 [<80060448>] (__lock_acquire) from [<800629e8>] (lock_acquire+0x70/0x84) r10:be8d9f60 r9:00000002 r8:00000032 r7:00000001 r6:be8d8000 r5:00000000 r4:60060013 [<80062978>] (lock_acquire) from [<800c0950>] (might_fault+0x6c/0x94) r7:00000030 r6:00000017 r5:00000000 r4:be8d8000 [<800c08e4>] (might_fault) from [<800ef774>] (filldir64+0x4c/0x184) r5:0033be68 r4:be8d9f60 [<800ef728>] (filldir64) from [<8018d088>] (jffs2_readdir+0xd4/0x1d0) r10:be8d9f60 r9:00000002 r8:000000e7 r7:bed62f30 r6:be8c4180 r5:00000000 r4:00000002 [<8018cfb4>] (jffs2_readdir) from [<800ef580>] (iterate_dir+0x7c/0xa8) r10:00000000 r9:be8d8000 r8:be8d9f60 r7:bed63030 r6:bed62f98 r5:00000000 r4:be908a00 [<800ef504>] (iterate_dir) from [<800efa1c>] (SyS_getdents64+0x80/0xf0) r8:be908a00 r7:be908a00 r6:00008000 r5:00000000 r4:0033be28 r3:00000000 [<800ef99c>] (SyS_getdents64) from [<8000e880>] (ret_fast_syscall+0x0/0x48) r9:be8d8000 r8:8000ea44 r7:000000d9 r6:0033be2c r5:00000000 r4:0033be28 udevd[72]: starting version 182