PROBLEM: JFFS2 deadlock on Linux 3.14.19
Ivan Grimaldi
grimaldi.ivan at gmail.com
Wed Sep 24 04:26:13 EDT 2014
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140924/306aa7b7/attachment.html
More information about the Kernelnewbies
mailing list