From 3d44b22ec8bec1ea799a7d262e437c851264b574 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 1 Aug 2020 13:33:42 +0200 Subject: [PATCH] 5.4-stable patches added patches: mm-filemap.c-don-t-bother-dropping-mmap_sem-for-zero-size-readahead.patch --- ...ing-mmap_sem-for-zero-size-readahead.patch | 42 +++++++++++++++++++ queue-5.4/series | 1 + 2 files changed, 43 insertions(+) create mode 100644 queue-5.4/mm-filemap.c-don-t-bother-dropping-mmap_sem-for-zero-size-readahead.patch diff --git a/queue-5.4/mm-filemap.c-don-t-bother-dropping-mmap_sem-for-zero-size-readahead.patch b/queue-5.4/mm-filemap.c-don-t-bother-dropping-mmap_sem-for-zero-size-readahead.patch new file mode 100644 index 00000000000..a2f997c60fc --- /dev/null +++ b/queue-5.4/mm-filemap.c-don-t-bother-dropping-mmap_sem-for-zero-size-readahead.patch @@ -0,0 +1,42 @@ +From 5c72feee3e45b40a3c96c7145ec422899d0e8964 Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Wed, 1 Apr 2020 21:04:40 -0700 +Subject: mm/filemap.c: don't bother dropping mmap_sem for zero size readahead + +From: Jan Kara + +commit 5c72feee3e45b40a3c96c7145ec422899d0e8964 upstream. + +When handling a page fault, we drop mmap_sem to start async readahead so +that we don't block on IO submission with mmap_sem held. However there's +no point to drop mmap_sem in case readahead is disabled. Handle that case +to avoid pointless dropping of mmap_sem and retrying the fault. This was +actually reported to block mlockall(MCL_CURRENT) indefinitely. + +Fixes: 6b4c9f446981 ("filemap: drop the mmap_sem for all blocking operations") +Reported-by: Minchan Kim +Reported-by: Robert Stupp +Signed-off-by: Jan Kara +Signed-off-by: Andrew Morton +Reviewed-by: Josef Bacik +Reviewed-by: Minchan Kim +Link: http://lkml.kernel.org/r/20200212101356.30759-1-jack@suse.cz +Signed-off-by: Linus Torvalds +Cc: SeongJae Park +Signed-off-by: Greg Kroah-Hartman + +--- + mm/filemap.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/mm/filemap.c ++++ b/mm/filemap.c +@@ -2438,7 +2438,7 @@ static struct file *do_async_mmap_readah + pgoff_t offset = vmf->pgoff; + + /* If we don't want any read-ahead, don't bother */ +- if (vmf->vma->vm_flags & VM_RAND_READ) ++ if (vmf->vma->vm_flags & VM_RAND_READ || !ra->ra_pages) + return fpin; + if (ra->mmap_miss > 0) + ra->mmap_miss--; diff --git a/queue-5.4/series b/queue-5.4/series index f171aab408e..8dced404617 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -3,3 +3,4 @@ media-rc-prevent-memory-leak-in-cx23888_ir_probe.patch sunrpc-check-that-domain-table-is-empty-at-module-un.patch ath10k-enable-transmit-data-ack-rssi-for-qca9884.patch pci-aspm-disable-aspm-on-asmedia-asm1083-1085-pcie-to-pci-bridge.patch +mm-filemap.c-don-t-bother-dropping-mmap_sem-for-zero-size-readahead.patch -- 2.47.3