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