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 linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 20 Dec 2022 15:27:38 +0800 From: Chih-En Lin <shiyn.lin@...il.com> To: Andrew Morton <akpm@...ux-foundation.org>, Qi Zheng <zhengqi.arch@...edance.com>, David Hildenbrand <david@...hat.com>, Matthew Wilcox <willy@...radead.org>, Christophe Leroy <christophe.leroy@...roup.eu>, John Hubbard <jhubbard@...dia.com>, Nadav Amit <namit@...are.com> Cc: linux-kernel@...r.kernel.org, linux-mm@...ck.org, Steven Rostedt <rostedt@...dmis.org>, Masami Hiramatsu <mhiramat@...nel.org>, Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...hat.com>, Arnaldo Carvalho de Melo <acme@...nel.org>, Mark Rutland <mark.rutland@....com>, Alexander Shishkin <alexander.shishkin@...ux.intel.com>, Jiri Olsa <jolsa@...nel.org>, Namhyung Kim <namhyung@...nel.org>, Yang Shi <shy828301@...il.com>, Peter Xu <peterx@...hat.com>, Zach O'Keefe <zokeefe@...gle.com>, "Liam R . Howlett" <Liam.Howlett@...cle.com>, Alex Sierra <alex.sierra@....com>, Xianting Tian <xianting.tian@...ux.alibaba.com>, Colin Cross <ccross@...gle.com>, Suren Baghdasaryan <surenb@...gle.com>, Barry Song <baohua@...nel.org>, Pasha Tatashin <pasha.tatashin@...een.com>, Suleiman Souhlal <suleiman@...gle.com>, Brian Geffon <bgeffon@...gle.com>, Yu Zhao <yuzhao@...gle.com>, Tong Tiangen <tongtiangen@...wei.com>, Liu Shixin <liushixin2@...wei.com>, Li kunyu <kunyu@...china.com>, Anshuman Khandual <anshuman.khandual@....com>, Vlastimil Babka <vbabka@...e.cz>, Hugh Dickins <hughd@...gle.com>, Minchan Kim <minchan@...nel.org>, Miaohe Lin <linmiaohe@...wei.com>, Gautam Menghani <gautammenghani201@...il.com>, Catalin Marinas <catalin.marinas@....com>, Mark Brown <broonie@...nel.org>, Will Deacon <will@...nel.org>, "Eric W . Biederman" <ebiederm@...ssion.com>, Thomas Gleixner <tglx@...utronix.de>, Sebastian Andrzej Siewior <bigeasy@...utronix.de>, Andy Lutomirski <luto@...nel.org>, Fenghua Yu <fenghua.yu@...el.com>, Barret Rhoden <brho@...gle.com>, Davidlohr Bueso <dave@...olabs.net>, "Jason A . Donenfeld" <Jason@...c4.com>, Dinglan Peng <peng301@...due.edu>, Pedro Fonseca <pfonseca@...due.edu>, Jim Huang <jserv@...s.ncku.edu.tw>, Huichun Feng <foxhoundsk.tw@...il.com>, Chih-En Lin <shiyn.lin@...il.com> Subject: [PATCH v3 09/14] mm/mprotect: Break COW PTE before changing protection If the PTE table is COW-ed, break it before changing the protection. Signed-off-by: Chih-En Lin <shiyn.lin@...il.com> --- mm/mprotect.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mm/mprotect.c b/mm/mprotect.c index 668bfaa6ed2ae..119116ec8f5e5 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -95,6 +95,9 @@ static unsigned long change_pte_range(struct mmu_gather *tlb, if (pmd_trans_unstable(pmd)) return 0; + if (break_cow_pte(vma, pmd, addr) < 0) + return 0; + /* * The pmd points to a regular pte so the pmd can't change * from under us even if the mmap_lock is only hold for @@ -305,6 +308,12 @@ static inline int pmd_none_or_clear_bad_unless_trans_huge(pmd_t *pmd) return 1; if (pmd_trans_huge(pmdval)) return 0; + /* + * If the entry point to COW-ed PTE, it's write protection bit + * will cause pmd_bad(). + */ + if (!pmd_write(pmdval)) + return 0; if (unlikely(pmd_bad(pmdval))) { pmd_clear_bad(pmd); return 1; -- 2.37.3
Powered by blists - more mailing lists