summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2023-06-15 16:17:48 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-07-01 13:16:24 +0200
commit755aa1bc6aaf9961aa4bdb54f32faaba06c08792 (patch)
treedde38bbc5ef03268a90b590fa105804fe4bdd719
parentd6a5c7a1a6e52d4c46fe181237ca96cd46a42386 (diff)
downloadlinux-stable-755aa1bc6aaf9961aa4bdb54f32faaba06c08792.tar.gz
linux-stable-755aa1bc6aaf9961aa4bdb54f32faaba06c08792.tar.bz2
linux-stable-755aa1bc6aaf9961aa4bdb54f32faaba06c08792.zip
mm: make the page fault mmap locking killable
commit eda0047296a16d65a7f2bc60a408f70d178b2014 upstream. This is done as a separate patch from introducing the new lock_mm_and_find_vma() helper, because while it's an obvious change, it's not what x86 used to do in this area. We already abort the page fault on fatal signals anyway, so why should we wait for the mmap lock only to then abort later? With the new helper function that returns without the lock held on failure anyway, this is particularly easy and straightforward. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Samuel Mendoza-Jonas <samjonas@amazon.com> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--mm/memory.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/mm/memory.c b/mm/memory.c
index 04a7c3540247..ade4d9eb52d8 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -5275,8 +5275,7 @@ static inline bool get_mmap_lock_carefully(struct mm_struct *mm, struct pt_regs
return false;
}
- mmap_read_lock(mm);
- return true;
+ return !mmap_read_lock_killable(mm);
}
static inline bool mmap_upgrade_trylock(struct mm_struct *mm)
@@ -5300,8 +5299,7 @@ static inline bool upgrade_mmap_lock_carefully(struct mm_struct *mm, struct pt_r
if (!search_exception_tables(ip))
return false;
}
- mmap_write_lock(mm);
- return true;
+ return !mmap_write_lock_killable(mm);
}
/*