aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/lpddr/lpddr_cmds.c
diff options
context:
space:
mode:
authorMiao Xie <[email protected]>2011-03-27 08:07:36 +0000
committerroot <Chris Mason [email protected]>2011-03-28 09:37:58 +0000
commit1561deda687eef0e95065f1268d680ddc5976ee7 (patch)
tree3ad8a8305fc3ca960cf7ef472f64d9cfef246ffd /drivers/mtd/lpddr/lpddr_cmds.c
parentbtrfs: check link counter overflow in link(2) (diff)
downloadkernel-1561deda687eef0e95065f1268d680ddc5976ee7.tar.gz
kernel-1561deda687eef0e95065f1268d680ddc5976ee7.zip
btrfs: fix possible deadlock by clearing __GFP_FS flag
Using the GFP_HIGHUSER_MOVABLE flag to allocate the metadata's page may cause deadlock. Task1 open() ... btrfs_search_slot() ... btrfs_cow_block() ... alloc_page() wait for reclaiming shrink_slab() ... shrink_icache_memory() ... btrfs_evict_inode() ... btrfs_search_slot() If the path is locked by task1, the deadlock happens. So the btree's page cache is different with the file's page cache, it can not allocate pages by GFP_HIGHUSER_MOVABLE flag, we must clear __GFP_FS flag in GFP_HIGHUSER_MOVABLE flag. Reported-by: Itaru Kitayama <[email protected]> Signed-off-by: Miao Xie <[email protected]> Signed-off-by: Chris Mason <[email protected]>
Diffstat (limited to 'drivers/mtd/lpddr/lpddr_cmds.c')
0 files changed, 0 insertions, 0 deletions