lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 6 May 2020 17:41:44 -0700 From: Anthony Yznaga <anthony.yznaga@...cle.com> To: linux-mm@...ck.org, linux-kernel@...r.kernel.org Cc: willy@...radead.org, corbet@....net, tglx@...utronix.de, mingo@...hat.com, bp@...en8.de, x86@...nel.org, hpa@...or.com, dave.hansen@...ux.intel.com, luto@...nel.org, peterz@...radead.org, rppt@...ux.ibm.com, akpm@...ux-foundation.org, hughd@...gle.com, ebiederm@...ssion.com, masahiroy@...nel.org, ardb@...nel.org, ndesaulniers@...gle.com, dima@...ovin.in, daniel.kiper@...cle.com, nivedita@...m.mit.edu, rafael.j.wysocki@...el.com, dan.j.williams@...el.com, zhenzhong.duan@...cle.com, jroedel@...e.de, bhe@...hat.com, guro@...com, Thomas.Lendacky@....com, andriy.shevchenko@...ux.intel.com, keescook@...omium.org, hannes@...xchg.org, minchan@...nel.org, mhocko@...nel.org, ying.huang@...el.com, yang.shi@...ux.alibaba.com, gustavo@...eddedor.com, ziqian.lzq@...fin.com, vdavydov.dev@...il.com, jason.zeng@...el.com, kevin.tian@...el.com, zhiyuan.lv@...el.com, lei.l.li@...el.com, paul.c.lai@...el.com, ashok.raj@...el.com, linux-fsdevel@...r.kernel.org, linux-doc@...r.kernel.org, kexec@...ts.infradead.org Subject: [RFC 18/43] kexec: PKRAM: avoid clobbering already preserved pages Ensure destination ranges of the kexec segments do not overlap with any kernel pages marked to be preserved across kexec. For kexec_load, return EADDRNOTAVAIL if overlap is detected. For kexec_file_load, skip ranges containing preserved pages when seaching for available ranges to use. Signed-off-by: Anthony Yznaga <anthony.yznaga@...cle.com> --- kernel/kexec_core.c | 3 +++ kernel/kexec_file.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c index c19c0dad1ebe..8c24b546352e 100644 --- a/kernel/kexec_core.c +++ b/kernel/kexec_core.c @@ -37,6 +37,7 @@ #include <linux/compiler.h> #include <linux/hugetlb.h> #include <linux/frame.h> +#include <linux/pkram.h> #include <asm/page.h> #include <asm/sections.h> @@ -176,6 +177,8 @@ int sanity_check_segment_list(struct kimage *image) return -EADDRNOTAVAIL; if (mend >= KEXEC_DESTINATION_MEMORY_LIMIT) return -EADDRNOTAVAIL; + if (pkram_has_preserved_pages(mstart, mend)) + return -EADDRNOTAVAIL; } /* Verify our destination addresses do not overlap. diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c index f57f72237859..7b14e1b1a178 100644 --- a/kernel/kexec_file.c +++ b/kernel/kexec_file.c @@ -498,6 +498,11 @@ static int locate_mem_hole_top_down(unsigned long start, unsigned long end, continue; } + if (pkram_has_preserved_pages(temp_start, temp_end + 1)) { + temp_start = temp_start - PAGE_SIZE; + continue; + } + /* We found a suitable memory range */ break; } while (1); -- 2.13.3
Powered by blists - more mailing lists