]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 1 Aug 2020 11:33:42 +0000 (13:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 1 Aug 2020 11:33:42 +0000 (13:33 +0200)
added patches:
mm-filemap.c-don-t-bother-dropping-mmap_sem-for-zero-size-readahead.patch

queue-5.4/mm-filemap.c-don-t-bother-dropping-mmap_sem-for-zero-size-readahead.patch [new file with mode: 0644]
queue-5.4/series

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 (file)
index 0000000..a2f997c
--- /dev/null
@@ -0,0 +1,42 @@
+From 5c72feee3e45b40a3c96c7145ec422899d0e8964 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+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 <jack@suse.cz>
+
+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 <minchan@kernel.org>
+Reported-by: Robert Stupp <snazy@gmx.de>
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Reviewed-by: Josef Bacik <josef@toxicpanda.com>
+Reviewed-by: Minchan Kim <minchan@kernel.org>
+Link: http://lkml.kernel.org/r/20200212101356.30759-1-jack@suse.cz
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: SeongJae Park <sjpark@amazon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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--;
index f171aab408e8afaaf6d0b64a501df86ff8652670..8dced404617f48f5dd3e72205dbd56e98dec5b7f 100644 (file)
@@ -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