ANDROID: f2fs: fix potential deadlock by android ftrace
sb_internal#2 --> &s->s_dquot.dqio_sem --> fs_reclaim
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(fs_reclaim);
lock(&s->s_dquot.dqio_sem);
lock(fs_reclaim);
lock(sb_internal#2);
*** DEADLOCK ***
3 locks held by kswapd0/133:
#0: ffffffda597c93a8 (fs_reclaim){+.+.}-{0:0}, at: __fs_reclaim_acquire+0x4/0x50
#1: ffffffda597bc890 (shrinker_rwsem){++++}-{3:3}, at: shrink_slab+0xa0/0x19c
#2: ffffff80d5fb90e0 (&type->s_umount_key#50){.+.+}-{3:3}, at: super_cache_scan+0x40/0x1dc
stack backtrace:
CPU: 7 PID: 133 Comm: kswapd0 Tainted: G W O 5.10.43-android12-9-g4665ec64f3df #1
Hardware name: MT6879(ENG) (DT)
Call trace:
dump_backtrace.cfi_jt+0x0/0x8
show_stack+0x1c/0x2c
dump_stack_lvl+0xd8/0x16c
print_circular_bug+0x2d4/0x2d8
check_noncircular+0x190/0x1a4
validate_chain+0xc54/0x2d34
__lock_acquire+0x7e4/0xed4
lock_acquire+0x114/0x394
f2fs_evict_inode+0x1a0/0x8b8
evict+0xd4/0x2f8
iput+0x1c0/0x258
dentry_unlink_inode+0x16c/0x1dc
__dentry_kill+0x128/0x280
shrink_dentry_list+0x6c/0x420
prune_dcache_sb+0x5c/0x90
super_cache_scan+0x13c/0x1dc
do_shrink_slab+0x1e0/0x388
shrink_slab+0xf4/0x19c
shrink_node_memcgs+0x80/0x25c
shrink_node+0x324/0x710
balance_pgdat+0x3a8/0x6a8
kswapd+0x484/0x594
kthread+0x15c/0x1ac
ret_from_fork+0x10/0x30
Bug: 201025620
Signed-off-by:
Jaegeuk Kim <jaegeuk@google.com>
Change-Id: Idaa303eb7c681a56ad5d4e1f6dddbda71f7fece4
Loading
Please register or sign in to comment