From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
Oleg Nesterov <oleg@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
Willy Tarreau <w@1wt.eu>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: [PATCH 3.14 01/29] mm: avoid setting up anonymous pages into file mapping
Date: Sat, 8 Aug 2015 15:07:24 -0700 [thread overview]
Message-ID: <20150808220718.317380967@linuxfoundation.org> (raw)
In-Reply-To: <20150808220718.247950412@linuxfoundation.org>
3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
commit 6b7339f4c31ad69c8e9c0b2859276e22cf72176d upstream.
Reading page fault handler code I've noticed that under right
circumstances kernel would map anonymous pages into file mappings: if
the VMA doesn't have vm_ops->fault() and the VMA wasn't fully populated
on ->mmap(), kernel would handle page fault to not populated pte with
do_anonymous_page().
Let's change page fault handler to use do_anonymous_page() only on
anonymous VMA (->vm_ops == NULL) and make sure that the VMA is not
shared.
For file mappings without vm_ops->fault() or shred VMA without vm_ops,
page fault on pte_none() entry would lead to SIGBUS.
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Willy Tarreau <w@1wt.eu>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
mm/memory.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3234,6 +3234,10 @@ static int do_anonymous_page(struct mm_s
pte_unmap(page_table);
+ /* File mapping without ->vm_ops ? */
+ if (vma->vm_flags & VM_SHARED)
+ return VM_FAULT_SIGBUS;
+
/* Check if we need to add a guard page to the stack */
if (check_stack_guard_page(vma, address) < 0)
return VM_FAULT_SIGSEGV;
@@ -3502,6 +3506,9 @@ static int do_linear_fault(struct mm_str
- vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff;
pte_unmap(page_table);
+ /* The VMA was not fully populated on mmap() or missing VM_DONTEXPAND */
+ if (!vma->vm_ops->fault)
+ return VM_FAULT_SIGBUS;
return __do_fault(mm, vma, address, pmd, pgoff, flags, orig_pte);
}
@@ -3650,11 +3657,9 @@ static int handle_pte_fault(struct mm_st
entry = ACCESS_ONCE(*pte);
if (!pte_present(entry)) {
if (pte_none(entry)) {
- if (vma->vm_ops) {
- if (likely(vma->vm_ops->fault))
- return do_linear_fault(mm, vma, address,
+ if (vma->vm_ops)
+ return do_linear_fault(mm, vma, address,
pte, pmd, flags, entry);
- }
return do_anonymous_page(mm, vma, address,
pte, pmd, flags);
}
next prev parent reply other threads:[~2015-08-08 22:08 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-08 22:07 [PATCH 3.14 00/29] 3.14.50-stable review Greg Kroah-Hartman
2015-08-08 22:07 ` Greg Kroah-Hartman [this message]
2015-08-08 22:07 ` [PATCH 3.14 02/29] freeing unlinked file indefinitely delayed Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 03/29] s390/sclp: clear upper register halves in _sclp_print_early Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 04/29] ARC: make sure instruction_pointer() returns unsigned value Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 07/29] ALSA: usb-audio: add dB range mapping for some devices Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 08/29] ALSA: hda - Fix MacBook Pro 5,2 quirk Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 10/29] mac80211: clear subdir_stations when removing debugfs Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 11/29] mmc: sdhci-esdhc: Make 8BIT bus work Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 12/29] mmc: sdhci-pxav3: fix platform_data is not initialized Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 13/29] md/raid1: fix test for was read error from last working device Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 14/29] tile: use free_bootmem_late() for initrd Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 15/29] Input: usbtouchscreen - avoid unresponsive TSC-30 touch screen Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 16/29] blkcg: fix gendisk reference leak in blkg_conf_prep() Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 17/29] ata: pmp: add quirk for Marvell 4140 SATA PMP Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 18/29] usb-storage: ignore ZTE MF 823 card reader in mode 0x1225 Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 19/29] xhci: Calculate old endpoints correctly on device reset Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 20/29] xhci: report U3 when link is in resume state Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 21/29] xhci: prevent bus_suspend if SS port resuming in phase 1 Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 22/29] xhci: do not report PLC when link is in internal resume state Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 23/29] x86/efi: Use all 64 bit of efi_memmap in setup_e820() Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 24/29] rds: rds_ib_device.refcount overflow Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 26/29] avr32: handle NULL as a valid clock object Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 27/29] iscsi-target: Fix use-after-free during TPG session shutdown Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 28/29] iscsi-target: Fix iser explicit logout TX kthread leak Greg Kroah-Hartman
2015-08-08 22:07 ` [PATCH 3.14 29/29] efi: fix 32bit kernel boot failed problem using efi Greg Kroah-Hartman
2015-08-09 3:16 ` [PATCH 3.14 00/29] 3.14.50-stable review Guenter Roeck
2015-08-10 19:10 ` Greg Kroah-Hartman
2015-08-10 5:03 ` Sudip Mukherjee
2015-08-10 18:13 ` Shuah Khan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150808220718.317380967@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=akpm@linux-foundation.org \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=w@1wt.eu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).