diff options
author | ZhangXiaoxu <zhangxiaoxu5@huawei.com> | 2019-06-12 09:54:25 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-06-22 08:18:22 +0200 |
commit | cd23996afa1441a2b658c33399e644a71025bdd5 (patch) | |
tree | bdb54dd62fd695517e50046cc25f0f0ecec0839c | |
parent | 38fbd5c2d5721f6f0a40d8bf6e58e9a05df56c7e (diff) | |
download | linux-stable-cd23996afa1441a2b658c33399e644a71025bdd5.tar.gz linux-stable-cd23996afa1441a2b658c33399e644a71025bdd5.tar.bz2 linux-stable-cd23996afa1441a2b658c33399e644a71025bdd5.zip |
futex: Fix futex lock the wrong page
The upstram commit 65d8fc777f6d ("futex: Remove requirement
for lock_page() in get_futex_key()") use variable 'page' as
the page head, when merge it to stable branch, the variable
`page_head` is page head.
In the stable branch, the variable `page` not means the page
head, when lock the page head, we should lock 'page_head',
rather than 'page'.
It maybe lead a hung task problem.
Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
Cc: stable@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | kernel/futex.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/futex.c b/kernel/futex.c index ec9df5ba040b..15d850ffbe29 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -593,8 +593,8 @@ again: * applies. If this is really a shmem page then the page lock * will prevent unexpected transitions. */ - lock_page(page); - shmem_swizzled = PageSwapCache(page) || page->mapping; + lock_page(page_head); + shmem_swizzled = PageSwapCache(page_head) || page_head->mapping; unlock_page(page_head); put_page(page_head); |