From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 4E8CC138334 for ; Wed, 31 Jul 2019 15:09:59 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 70814E080E; Wed, 31 Jul 2019 15:09:58 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 40960E080E for ; Wed, 31 Jul 2019 15:09:58 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 4C3BE34722F for ; Wed, 31 Jul 2019 15:09:56 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id E6D356DB for ; Wed, 31 Jul 2019 15:09:54 +0000 (UTC) From: "Mike Pagano" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mike Pagano" Message-ID: <1564585780.bdbdcab2154fa53eb7929d82ef85240d56a9c306.mpagano@gentoo> Subject: [gentoo-commits] proj/linux-patches:4.19 commit in: / X-VCS-Repository: proj/linux-patches X-VCS-Files: 0000_README 1800_vmalloc-sync-unmappings-fix.patch X-VCS-Directories: / X-VCS-Committer: mpagano X-VCS-Committer-Name: Mike Pagano X-VCS-Revision: bdbdcab2154fa53eb7929d82ef85240d56a9c306 X-VCS-Branch: 4.19 Date: Wed, 31 Jul 2019 15:09:54 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 133641b5-b7e0-4cde-a567-db8c8c31cadd X-Archives-Hash: 6e6d888ce0258e5defe2b6df2a31f416 commit: bdbdcab2154fa53eb7929d82ef85240d56a9c306 Author: Mike Pagano gentoo org> AuthorDate: Wed Jul 31 15:09:40 2019 +0000 Commit: Mike Pagano gentoo org> CommitDate: Wed Jul 31 15:09:40 2019 +0000 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=bdbdcab2 mm/vmalloc: Sync unmappings in __purge_vmap_area_lazy() Signed-off-by: Mike Pagano gentoo.org> 0000_README | 4 +++ 1800_vmalloc-sync-unmappings-fix.patch | 58 ++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/0000_README b/0000_README index 2e505ed..4639dff 100644 --- a/0000_README +++ b/0000_README @@ -303,6 +303,10 @@ Patch: 1510_fs-enable-link-security-restrictions-by-default.patch From: http://sources.debian.net/src/linux/3.16.7-ckt4-3/debian/patches/debian/fs-enable-link-security-restrictions-by-default.patch/ Desc: Enable link security restrictions by default. +Patch: 1800_vmalloc-sync-unmappings-fix.patch +From: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/?id=3f8fd02b1bf1d7ba964485a56f2f4b53ae88c167 +Desc: mm/vmalloc: Sync unmappings in __purge_vmap_area_lazy() + Patch: 2000_BT-Check-key-sizes-only-if-Secure-Simple-Pairing-enabled.patch From: https://lore.kernel.org/linux-bluetooth/20190522070540.48895-1-marcel@holtmann.org/raw Desc: Bluetooth: Check key sizes only when Secure Simple Pairing is enabled. See bug #686758 diff --git a/1800_vmalloc-sync-unmappings-fix.patch b/1800_vmalloc-sync-unmappings-fix.patch new file mode 100644 index 0000000..7e56e51 --- /dev/null +++ b/1800_vmalloc-sync-unmappings-fix.patch @@ -0,0 +1,58 @@ +From 3f8fd02b1bf1d7ba964485a56f2f4b53ae88c167 Mon Sep 17 00:00:00 2001 +From: Joerg Roedel +Date: Fri, 19 Jul 2019 20:46:52 +0200 +Subject: mm/vmalloc: Sync unmappings in __purge_vmap_area_lazy() + +On x86-32 with PTI enabled, parts of the kernel page-tables are not shared +between processes. This can cause mappings in the vmalloc/ioremap area to +persist in some page-tables after the region is unmapped and released. + +When the region is re-used the processes with the old mappings do not fault +in the new mappings but still access the old ones. + +This causes undefined behavior, in reality often data corruption, kernel +oopses and panics and even spontaneous reboots. + +Fix this problem by activly syncing unmaps in the vmalloc/ioremap area to +all page-tables in the system before the regions can be re-used. + +References: https://bugzilla.suse.com/show_bug.cgi?id=1118689 +Fixes: 5d72b4fba40ef ('x86, mm: support huge I/O mapping capability I/F') +Signed-off-by: Joerg Roedel +Signed-off-by: Thomas Gleixner +Reviewed-by: Dave Hansen +Link: https://lkml.kernel.org/r/20190719184652.11391-4-joro@8bytes.org +--- + mm/vmalloc.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/mm/vmalloc.c b/mm/vmalloc.c +index 4fa8d84599b0..e0fc963acc41 100644 +--- a/mm/vmalloc.c ++++ b/mm/vmalloc.c +@@ -1258,6 +1258,12 @@ static bool __purge_vmap_area_lazy(unsigned long start, unsigned long end) + if (unlikely(valist == NULL)) + return false; + ++ /* ++ * First make sure the mappings are removed from all page-tables ++ * before they are freed. ++ */ ++ vmalloc_sync_all(); ++ + /* + * TODO: to calculate a flush range without looping. + * The list can be up to lazy_max_pages() elements. +@@ -3038,6 +3044,9 @@ EXPORT_SYMBOL(remap_vmalloc_range); + /* + * Implement a stub for vmalloc_sync_all() if the architecture chose not to + * have one. ++ * ++ * The purpose of this function is to make sure the vmalloc area ++ * mappings are identical in all page-tables in the system. + */ + void __weak vmalloc_sync_all(void) + { +-- +cgit 1.2-0.3.lf.el7 +