aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/futex.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/futex.c')
-rw-r--r--kernel/futex.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/futex.c b/kernel/futex.c
index b26dcfc02c94..c3a1a55a5214 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -61,6 +61,8 @@
61#include <linux/nsproxy.h> 61#include <linux/nsproxy.h>
62#include <linux/ptrace.h> 62#include <linux/ptrace.h>
63#include <linux/sched/rt.h> 63#include <linux/sched/rt.h>
64#include <linux/hugetlb.h>
65#include <linux/freezer.h>
64 66
65#include <asm/futex.h> 67#include <asm/futex.h>
66 68
@@ -365,7 +367,7 @@ again:
365 } else { 367 } else {
366 key->both.offset |= FUT_OFF_INODE; /* inode-based key */ 368 key->both.offset |= FUT_OFF_INODE; /* inode-based key */
367 key->shared.inode = page_head->mapping->host; 369 key->shared.inode = page_head->mapping->host;
368 key->shared.pgoff = page_head->index; 370 key->shared.pgoff = basepage_index(page);
369 } 371 }
370 372
371 get_futex_key_refs(key); 373 get_futex_key_refs(key);
@@ -1807,7 +1809,7 @@ static void futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q *q,
1807 * is no timeout, or if it has yet to expire. 1809 * is no timeout, or if it has yet to expire.
1808 */ 1810 */
1809 if (!timeout || timeout->task) 1811 if (!timeout || timeout->task)
1810 schedule(); 1812 freezable_schedule();
1811 } 1813 }
1812 __set_current_state(TASK_RUNNING); 1814 __set_current_state(TASK_RUNNING);
1813} 1815}