diff options
author | Henry Burns <henryburns@google.com> | 2019-07-16 16:26:18 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-09-19 09:11:06 +0200 |
commit | 1894d857ce860cb76bd866bb5d951217034f3f6f (patch) | |
tree | 4ed4f8e8d69a3e0929686c67a6c9c1dfff511c80 /mm/z3fold.c | |
parent | ead8b4f3b2f952e8cb0896d433dd293103807b35 (diff) | |
download | linux-stable-1894d857ce860cb76bd866bb5d951217034f3f6f.tar.gz linux-stable-1894d857ce860cb76bd866bb5d951217034f3f6f.tar.bz2 linux-stable-1894d857ce860cb76bd866bb5d951217034f3f6f.zip |
mm/z3fold.c: remove z3fold_migration trylock
commit be03074c9af25d06cf8e9ebddfcd284c0bf7f947 upstream.
z3fold_page_migrate() will never succeed because it attempts to acquire
a lock that has already been taken by migrate.c in __unmap_and_move().
__unmap_and_move() migrate.c
trylock_page(oldpage)
move_to_new_page(oldpage_newpage)
a_ops->migrate_page(oldpage, newpage)
z3fold_page_migrate(oldpage, newpage)
trylock_page(oldpage)
Link: http://lkml.kernel.org/r/20190710213238.91835-1-henryburns@google.com
Fixes: 1f862989b04a ("mm/z3fold.c: support page migration")
Signed-off-by: Henry Burns <henryburns@google.com>
Reviewed-by: Shakeel Butt <shakeelb@google.com>
Cc: Vitaly Wool <vitalywool@gmail.com>
Cc: Vitaly Vul <vitaly.vul@sony.com>
Cc: Jonathan Adams <jwadams@google.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Snild Dolkow <snild@sony.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'mm/z3fold.c')
-rw-r--r-- | mm/z3fold.c | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/mm/z3fold.c b/mm/z3fold.c index 46686d0e3df8..39d0a8a40e66 100644 --- a/mm/z3fold.c +++ b/mm/z3fold.c @@ -1439,16 +1439,11 @@ static int z3fold_page_migrate(struct address_space *mapping, struct page *newpa zhdr = page_address(page); pool = zhdr_to_pool(zhdr); - if (!trylock_page(page)) - return -EAGAIN; - if (!z3fold_page_trylock(zhdr)) { - unlock_page(page); return -EAGAIN; } if (zhdr->mapped_count != 0) { z3fold_page_unlock(zhdr); - unlock_page(page); return -EBUSY; } if (work_pending(&zhdr->work)) { @@ -1494,7 +1489,6 @@ static int z3fold_page_migrate(struct address_space *mapping, struct page *newpa spin_unlock(&pool->lock); page_mapcount_reset(page); - unlock_page(page); put_page(page); return 0; } |