mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 21:57:43 +00:00
22e71691fd
I can observe that RHEL7 environment stalls with 100% CPU usage when a certain type of memory pressure is given. While the shrinker functions are called by shrink_slab() before the OOM killer is triggered, the stall lasts for many minutes. One of reasons of this stall is that ttm_dma_pool_shrink_count()/ttm_dma_pool_shrink_scan() are called and are blocked at mutex_lock(&_manager->lock). GFP_KERNEL allocation with _manager->lock held causes someone (including kswapd) to deadlock when these functions are called due to memory pressure. This patch changes "mutex_lock();" to "if (!mutex_trylock()) return ...;" in order to avoid deadlock. Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Cc: stable <stable@kernel.org> [3.3+] Signed-off-by: Dave Airlie <airlied@redhat.com> |
||
---|---|---|
.. | ||
Makefile | ||
ttm_agp_backend.c | ||
ttm_bo.c | ||
ttm_bo_manager.c | ||
ttm_bo_util.c | ||
ttm_bo_vm.c | ||
ttm_execbuf_util.c | ||
ttm_lock.c | ||
ttm_memory.c | ||
ttm_module.c | ||
ttm_object.c | ||
ttm_page_alloc.c | ||
ttm_page_alloc_dma.c | ||
ttm_tt.c |