All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Jakub Kicinski <kubakici@wp.pl>,
	Andrey Ryabinin <aryabinin@virtuozzo.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Andy Lutomirski <luto@kernel.org>,
	Thomas Garnier <thgarnie@google.com>
Subject: [PATCH 4.14 01/38] x86/mm: Set MODULES_END to 0xffffffffff000000
Date: Mon,  8 Jan 2018 13:58:54 +0100	[thread overview]
Message-ID: <20180108125916.021849410@linuxfoundation.org> (raw)
In-Reply-To: <20180108125915.951963528@linuxfoundation.org>

4.14-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Andrey Ryabinin <aryabinin@virtuozzo.com>

commit f5a40711fa58f1c109165a4fec6078bf2dfd2bdc upstream.

Since f06bdd4001c2 ("x86/mm: Adapt MODULES_END based on fixmap section size")
kasan_mem_to_shadow(MODULES_END) could be not aligned to a page boundary.

So passing page unaligned address to kasan_populate_zero_shadow() have two
possible effects:

1) It may leave one page hole in supposed to be populated area. After commit
  21506525fb8d ("x86/kasan/64: Teach KASAN about the cpu_entry_area") that
  hole happens to be in the shadow covering fixmap area and leads to crash:

 BUG: unable to handle kernel paging request at fffffbffffe8ee04
 RIP: 0010:check_memory_region+0x5c/0x190

 Call Trace:
  <NMI>
  memcpy+0x1f/0x50
  ghes_copy_tofrom_phys+0xab/0x180
  ghes_read_estatus+0xfb/0x280
  ghes_notify_nmi+0x2b2/0x410
  nmi_handle+0x115/0x2c0
  default_do_nmi+0x57/0x110
  do_nmi+0xf8/0x150
  end_repeat_nmi+0x1a/0x1e

Note, the crash likely disappeared after commit 92a0f81d8957, which
changed kasan_populate_zero_shadow() call the way it was before
commit 21506525fb8d.

2) Attempt to load module near MODULES_END will fail, because
   __vmalloc_node_range() called from kasan_module_alloc() will hit the
   WARN_ON(!pte_none(*pte)) in the vmap_pte_range() and bail out with error.

To fix this we need to make kasan_mem_to_shadow(MODULES_END) page aligned
which means that MODULES_END should be 8*PAGE_SIZE aligned.

The whole point of commit f06bdd4001c2 was to move MODULES_END down if
NR_CPUS is big, so the cpu_entry_area takes a lot of space.
But since 92a0f81d8957 ("x86/cpu_entry_area: Move it out of the fixmap")
the cpu_entry_area is no longer in fixmap, so we could just set
MODULES_END to a fixed 8*PAGE_SIZE aligned address.

Fixes: f06bdd4001c2 ("x86/mm: Adapt MODULES_END based on fixmap section size")
Reported-by: Jakub Kicinski <kubakici@wp.pl>
Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Thomas Garnier <thgarnie@google.com>
Link: https://lkml.kernel.org/r/20171228160620.23818-1-aryabinin@virtuozzo.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 Documentation/x86/x86_64/mm.txt         |    5 +----
 arch/x86/include/asm/pgtable_64_types.h |    2 +-
 2 files changed, 2 insertions(+), 5 deletions(-)

--- a/Documentation/x86/x86_64/mm.txt
+++ b/Documentation/x86/x86_64/mm.txt
@@ -43,7 +43,7 @@ ffffff0000000000 - ffffff7fffffffff (=39
 ffffffef00000000 - fffffffeffffffff (=64 GB) EFI region mapping space
 ... unused hole ...
 ffffffff80000000 - ffffffff9fffffff (=512 MB)  kernel text mapping, from phys 0
-ffffffffa0000000 - [fixmap start]   (~1526 MB) module mapping space
+ffffffffa0000000 - fffffffffeffffff (1520 MB) module mapping space
 [fixmap start]   - ffffffffff5fffff kernel-internal fixmap range
 ffffffffff600000 - ffffffffff600fff (=4 kB) legacy vsyscall ABI
 ffffffffffe00000 - ffffffffffffffff (=2 MB) unused hole
@@ -67,9 +67,6 @@ memory window (this size is arbitrary, i
 The mappings are not part of any other kernel PGD and are only available
 during EFI runtime calls.
 
-The module mapping space size changes based on the CONFIG requirements for the
-following fixmap section.
-
 Note that if CONFIG_RANDOMIZE_MEMORY is enabled, the direct mapping of all
 physical memory, vmalloc/ioremap space and virtual memory map are randomized.
 Their order is preserved but their base will be offset early at boot time.
--- a/arch/x86/include/asm/pgtable_64_types.h
+++ b/arch/x86/include/asm/pgtable_64_types.h
@@ -104,7 +104,7 @@ typedef struct { pteval_t pte; } pte_t;
 
 #define MODULES_VADDR		(__START_KERNEL_map + KERNEL_IMAGE_SIZE)
 /* The module sections ends with the start of the fixmap */
-#define MODULES_END		__fix_to_virt(__end_of_fixed_addresses + 1)
+#define MODULES_END		_AC(0xffffffffff000000, UL)
 #define MODULES_LEN		(MODULES_END - MODULES_VADDR)
 
 #define ESPFIX_PGD_ENTRY	_AC(-2, UL)

  reply	other threads:[~2018-01-08 12:59 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-08 12:58 [PATCH 4.14 00/38] 4.14.13-stable review Greg Kroah-Hartman
2018-01-08 12:58 ` Greg Kroah-Hartman [this message]
2018-01-08 12:58 ` [PATCH 4.14 02/38] x86/mm: Map cpu_entry_area at the same place on 4/5 level Greg Kroah-Hartman
2018-01-08 12:58 ` [PATCH 4.14 03/38] x86/kaslr: Fix the vaddr_end mess Greg Kroah-Hartman
2018-01-08 12:58 ` [PATCH 4.14 04/38] x86/events/intel/ds: Use the proper cache flush method for mapping ds buffers Greg Kroah-Hartman
2018-01-08 12:58 ` [PATCH 4.14 05/38] x86/tlb: Drop the _GPL from the cpu_tlbstate export Greg Kroah-Hartman
2018-01-08 12:58 ` [PATCH 4.14 06/38] x86/alternatives: Add missing \n at end of ALTERNATIVE inline asm Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 07/38] x86/pti: Rename BUG_CPU_INSECURE to BUG_CPU_MELTDOWN Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 08/38] kernel/acct.c: fix the acct->needcheck check in check_free_space() Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 09/38] mm/mprotect: add a cond_resched() inside change_pmd_range() Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 10/38] mm/sparse.c: wrong allocation for mem_section Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 11/38] userfaultfd: clear the vma->vm_userfaultfd_ctx if UFFD_EVENT_FORK fails Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 12/38] btrfs: fix refcount_t usage when deleting btrfs_delayed_nodes Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 13/38] efi/capsule-loader: Reinstate virtual capsule mapping Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 14/38] crypto: n2 - cure use after free Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 15/38] crypto: chacha20poly1305 - validate the digest size Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 16/38] crypto: pcrypt - fix freeing pcrypt instances Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 17/38] crypto: chelsio - select CRYPTO_GF128MUL Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 18/38] drm/i915: Disable DC states around GMBUS on GLK Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 19/38] drm/i915: Apply Display WA #1183 on skl, kbl, and cfl Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 20/38] sunxi-rsb: Include OF based modalias in device uevent Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 21/38] fscache: Fix the default for fscache_maybe_release_page() Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 22/38] x86 / CPU: Avoid unnecessary IPIs in arch_freq_get_on_cpu() Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 23/38] x86 / CPU: Always show current CPU frequency in /proc/cpuinfo Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 24/38] kernel/signal.c: protect the traced SIGNAL_UNKILLABLE tasks from SIGKILL Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 25/38] kernel/signal.c: protect the SIGNAL_UNKILLABLE tasks from !sig_kernel_only() signals Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 26/38] kernel/signal.c: remove the no longer needed SIGNAL_UNKILLABLE check in complete_signal() Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 27/38] iommu/arm-smmu-v3: Dont free page table ops twice Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 28/38] iommu/arm-smmu-v3: Cope with duplicated Stream IDs Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 29/38] ARC: uaccess: dont use "l" gcc inline asm constraint modifier Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 30/38] powerpc/mm: Fix SEGV on mapped region to return SEGV_ACCERR Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 31/38] Input: elantech - add new icbody type 15 Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 32/38] x86/microcode/AMD: Add support for fam17h microcode loading Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 33/38] apparmor: fix regression in mount mediation when feature set is pinned Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 34/38] parisc: Fix alignment of pa_tlb_lock in assembly on 32-bit SMP kernel Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 35/38] parisc: qemu idle sleep support Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 36/38] mtd: nand: pxa3xx: Fix READOOB implementation Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 37/38] KVM: s390: fix cmma migration for multiple memory slots Greg Kroah-Hartman
2018-01-08 12:59 ` [PATCH 4.14 38/38] KVM: s390: prevent buffer overrun on memory hotplug during migration Greg Kroah-Hartman
2018-01-08 16:47 ` [PATCH 4.14 00/38] 4.14.13-stable review kernelci.org bot
2018-01-08 20:59 ` Shuah Khan
2018-01-09  9:11   ` Greg Kroah-Hartman
2018-01-09  8:45 ` Naresh Kamboju
2018-01-09  9:27   ` Greg Kroah-Hartman
2018-01-09 13:45 ` Guenter Roeck
2018-01-09 19:07   ` Greg Kroah-Hartman

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=20180108125916.021849410@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=aryabinin@virtuozzo.com \
    --cc=kubakici@wp.pl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=thgarnie@google.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.