• S
    ext4: add cond_resched() to __ext4_find_entry() · ef91f0f3
    Shijie Luo via Kernel 提交于
    mainline inclusion
    from mainline-v5.6-rc3
    commit 9424ef56e13a1f14c57ea161eed3ecfdc7b2770e
    category: bugfix
    bugzilla: 31127
    CVE: NA
    
    -------------------------------------------------
    We tested a soft lockup problem in linux 4.19 which could also
    be found in linux 5.x.
    
    When dir inode takes up a large number of blocks, and if the
    directory is growing when we are searching, it's possible the
    restart branch could be called many times, and the do while loop
    could hold cpu a long time.
    
    Here is the call trace in linux 4.19.
    
    [  473.756186] Call trace:
    [  473.756196]  dump_backtrace+0x0/0x198
    [  473.756199]  show_stack+0x24/0x30
    [  473.756205]  dump_stack+0xa4/0xcc
    [  473.756210]  watchdog_timer_fn+0x300/0x3e8
    [  473.756215]  __hrtimer_run_queues+0x114/0x358
    [  473.756217]  hrtimer_interrupt+0x104/0x2d8
    [  473.756222]  arch_timer_handler_virt+0x38/0x58
    [  473.756226]  handle_percpu_devid_irq+0x90/0x248
    [  473.756231]  generic_handle_irq+0x34/0x50
    [  473.756234]  __handle_domain_irq+0x68/0xc0
    [  473.756236]  gic_handle_irq+0x6c/0x150
    [  473.756238]  el1_irq+0xb8/0x140
    [  473.756286]  ext4_es_lookup_extent+0xdc/0x258 [ext4]
    [  473.756310]  ext4_map_blocks+0x64/0x5c0 [ext4]
    [  473.756333]  ext4_getblk+0x6c/0x1d0 [ext4]
    [  473.756356]  ext4_bread_batch+0x7c/0x1f8 [ext4]
    [  473.756379]  ext4_find_entry+0x124/0x3f8 [ext4]
    [  473.756402]  ext4_lookup+0x8c/0x258 [ext4]
    [  473.756407]  __lookup_hash+0x8c/0xe8
    [  473.756411]  filename_create+0xa0/0x170
    [  473.756413]  do_mkdirat+0x6c/0x140
    [  473.756415]  __arm64_sys_mkdirat+0x28/0x38
    [  473.756419]  el0_svc_common+0x78/0x130
    [  473.756421]  el0_svc_handler+0x38/0x78
    [  473.756423]  el0_svc+0x8/0xc
    [  485.755156] watchdog: BUG: soft lockup - CPU#2 stuck for 22s! [tmp:5149]
    
    Add cond_resched() to avoid soft lockup and to provide a better
    system responding.
    
    Link: https://lore.kernel.org/r/20200215080206.13293-1-luoshijie1@huawei.comSigned-off-by: NShijie Luo <luoshijie1@huawei.com>
    Signed-off-by: NTheodore Ts'o <tytso@mit.edu>
    Reviewed-by: NJan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    Reviewed-by: Nzhangyi (F) <yi.zhang@huawei.com>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    ef91f0f3
namei.c 103.3 KB