Messages in this thread | | | From | "Edgecombe, Rick P" <> | Subject | Re: [PATCH v9 01/42] mm: Rename arch pte_mkwrite()'s to pte_mkwrite_novma() | Date | Tue, 13 Jun 2023 16:14:29 +0000 |
| |
On Tue, 2023-06-13 at 10:43 +0300, Mike Rapoport wrote: > On Mon, Jun 12, 2023 at 05:10:27PM -0700, Rick Edgecombe wrote: > > The x86 Shadow stack feature includes a new type of memory called > > shadow > > stack. This shadow stack memory has some unusual properties, which > > requires > > some core mm changes to function properly. > > > > One of these unusual properties is that shadow stack memory is > > writable, > > but only in limited ways. These limits are applied via a specific > > PTE > > bit combination. Nevertheless, the memory is writable, and core mm > > code > > will need to apply the writable permissions in the typical paths > > that > > call pte_mkwrite(). Future patches will make pte_mkwrite() take a > > VMA, so > > that the x86 implementation of it can know whether to create > > regular > > writable memory or shadow stack memory. > > Nit: ^ mapping?
Hmm, sure.
> > > But there are a couple of challenges to this. Modifying the > > signatures of > > each arch pte_mkwrite() implementation would be error prone because > > some > > are generated with macros and would need to be re-implemented. > > Also, some > > pte_mkwrite() callers operate on kernel memory without a VMA. > > > > So this can be done in a three step process. First pte_mkwrite() > > can be > > renamed to pte_mkwrite_novma() in each arch, with a generic > > pte_mkwrite() > > added that just calls pte_mkwrite_novma(). Next callers without a > > VMA can > > be moved to pte_mkwrite_novma(). And lastly, pte_mkwrite() and all > > callers > > can be changed to take/pass a VMA. > > > > Start the process by renaming pte_mkwrite() to pte_mkwrite_novma() > > and > > adding the pte_mkwrite() wrapper in linux/pgtable.h. Apply the same > > pattern for pmd_mkwrite(). Since not all archs have a > > pmd_mkwrite_novma(), > > create a new arch config HAS_HUGE_PAGE that can be used to tell if > > pmd_mkwrite() should be defined. Otherwise in the !HAS_HUGE_PAGE > > cases the > > compiler would not be able to find pmd_mkwrite_novma(). > > > > No functional change. > > > > Cc: linux-doc@vger.kernel.org > > Cc: linux-kernel@vger.kernel.org > > Cc: linux-alpha@vger.kernel.org > > Cc: linux-snps-arc@lists.infradead.org > > Cc: linux-arm-kernel@lists.infradead.org > > Cc: linux-csky@vger.kernel.org > > Cc: linux-hexagon@vger.kernel.org > > Cc: linux-ia64@vger.kernel.org > > Cc: loongarch@lists.linux.dev > > Cc: linux-m68k@lists.linux-m68k.org > > Cc: Michal Simek <monstr@monstr.eu> > > Cc: Dinh Nguyen <dinguyen@kernel.org> > > Cc: linux-mips@vger.kernel.org > > Cc: openrisc@lists.librecores.org > > Cc: linux-parisc@vger.kernel.org > > Cc: linuxppc-dev@lists.ozlabs.org > > Cc: linux-riscv@lists.infradead.org > > Cc: linux-s390@vger.kernel.org > > Cc: linux-sh@vger.kernel.org > > Cc: sparclinux@vger.kernel.org > > Cc: linux-um@lists.infradead.org > > Cc: linux-arch@vger.kernel.org > > Cc: linux-mm@kvack.org > > Suggested-by: Linus Torvalds <torvalds@linuxfoundation.org> > > Signed-off-by: Rick Edgecombe <rick.p.edgecombe@intel.com> > > Link: > > https://lore.kernel.org/lkml/CAHk-=wiZjSu7c9sFYZb3q04108stgHff2wfbokGCCgW7riz+8Q@mail.gmail.com/ > > Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org>
Thanks!
| |