From: tip-bot for Andrey Ryabinin <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, adech.fo@gmail.com,
a.ryabinin@samsung.com, torvalds@linux-foundation.org,
alpopov@ptsecurity.com, hpa@zytor.com, mingo@kernel.org,
peterz@infradead.org, glider@google.com, bp@alien8.de,
tglx@linutronix.de, dvyukov@google.com
Subject: [tip:x86/urgent] x86/kasan: Fix boot crash on AMD processors
Date: Mon, 6 Jul 2015 08:37:27 -0700 [thread overview]
Message-ID: <tip-d4f86beacc21d538dc41e1fc75a22e084f547edf@git.kernel.org> (raw)
In-Reply-To: <1435828178-10975-5-git-send-email-a.ryabinin@samsung.com>
Commit-ID: d4f86beacc21d538dc41e1fc75a22e084f547edf
Gitweb: http://git.kernel.org/tip/d4f86beacc21d538dc41e1fc75a22e084f547edf
Author: Andrey Ryabinin <a.ryabinin@samsung.com>
AuthorDate: Thu, 2 Jul 2015 12:09:36 +0300
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Mon, 6 Jul 2015 14:53:14 +0200
x86/kasan: Fix boot crash on AMD processors
While populating zero shadow wrong bits in upper level page
tables used. __PAGE_KERNEL_RO that was used for pgd/pud/pmd has
_PAGE_BIT_GLOBAL set. Global bit is present only in the lowest
level of the page translation hierarchy (ptes), and it should be
zero in upper levels.
This bug seems doesn't cause any troubles on Intel cpus, while
on AMDs it cause kernel crash on boot.
Use _KERNPG_TABLE bits for pgds/puds/pmds to fix this.
Reported-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com>
Cc: <stable@vger.kernel.org> # 4.0+
Cc: Alexander Popov <alpopov@ptsecurity.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Andrey Konovalov <adech.fo@gmail.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1435828178-10975-5-git-send-email-a.ryabinin@samsung.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/mm/kasan_init_64.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/x86/mm/kasan_init_64.c b/arch/x86/mm/kasan_init_64.c
index 5d26642..9a54dbe 100644
--- a/arch/x86/mm/kasan_init_64.c
+++ b/arch/x86/mm/kasan_init_64.c
@@ -85,7 +85,7 @@ static int __init zero_pmd_populate(pud_t *pud, unsigned long addr,
while (IS_ALIGNED(addr, PMD_SIZE) && addr + PMD_SIZE <= end) {
WARN_ON(!pmd_none(*pmd));
set_pmd(pmd, __pmd(__pa_nodebug(kasan_zero_pte)
- | __PAGE_KERNEL_RO));
+ | _KERNPG_TABLE));
addr += PMD_SIZE;
pmd = pmd_offset(pud, addr);
}
@@ -111,7 +111,7 @@ static int __init zero_pud_populate(pgd_t *pgd, unsigned long addr,
while (IS_ALIGNED(addr, PUD_SIZE) && addr + PUD_SIZE <= end) {
WARN_ON(!pud_none(*pud));
set_pud(pud, __pud(__pa_nodebug(kasan_zero_pmd)
- | __PAGE_KERNEL_RO));
+ | _KERNPG_TABLE));
addr += PUD_SIZE;
pud = pud_offset(pgd, addr);
}
@@ -136,7 +136,7 @@ static int __init zero_pgd_populate(unsigned long addr, unsigned long end)
while (IS_ALIGNED(addr, PGDIR_SIZE) && addr + PGDIR_SIZE <= end) {
WARN_ON(!pgd_none(*pgd));
set_pgd(pgd, __pgd(__pa_nodebug(kasan_zero_pud)
- | __PAGE_KERNEL_RO));
+ | _KERNPG_TABLE));
addr += PGDIR_SIZE;
pgd = pgd_offset_k(addr);
}
next prev parent reply other threads:[~2015-07-06 15:38 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-02 9:09 [PATCH v2 0/6] x86_64 kasan fixes Andrey Ryabinin
2015-07-02 9:09 ` [PATCH v2 1/6] x86_64, init: clear init_level4_pgt earlier Andrey Ryabinin
2015-07-06 15:36 ` [tip:x86/urgent] x86/init: Clear 'init_level4_pgt' earlier tip-bot for Andrey Ryabinin
2015-07-02 9:09 ` [PATCH v2 2/6] x86_64: kasan: fix kasan shadow region page tables Andrey Ryabinin
2015-07-06 15:36 ` [tip:x86/urgent] x86/kasan: Fix KASAN " tip-bot for Alexander Popov
2015-07-02 9:09 ` [PATCH v2 3/6] x86_64: kasan: flush tlbs after switching cr3 Andrey Ryabinin
2015-07-06 15:37 ` [tip:x86/urgent] x86/kasan: Flush TLBs after switching CR3 tip-bot for Andrey Ryabinin
2015-07-02 9:09 ` [PATCH v2 4/6] x86_64: kasan: fix boot crash on AMD processors Andrey Ryabinin
2015-07-06 15:37 ` tip-bot for Andrey Ryabinin [this message]
2015-07-02 9:09 ` [PATCH v2 5/6] x86_64: kasan: add message about kasan being initialized Andrey Ryabinin
2015-07-06 15:37 ` [tip:x86/urgent] x86/kasan: Add message about KASAN " tip-bot for Andrey Ryabinin
2015-07-02 9:09 ` [PATCH v2 6/6] x86_64: kasan: move KASAN_SHADOW_OFFSET to the arch Kconfig Andrey Ryabinin
2015-07-06 15:38 ` [tip:x86/urgent] x86/kasan: Move " tip-bot for Andrey Ryabinin
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=tip-d4f86beacc21d538dc41e1fc75a22e084f547edf@git.kernel.org \
--to=tipbot@zytor.com \
--cc=a.ryabinin@samsung.com \
--cc=adech.fo@gmail.com \
--cc=alpopov@ptsecurity.com \
--cc=bp@alien8.de \
--cc=dvyukov@google.com \
--cc=glider@google.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
/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
Powered by JetHome