On Tue, Dec 10, 2024 at 10:27:56AM +0100, Kevin Brodsky wrote: > On 09/12/2024 11:24, Peter Zijlstra wrote: > > On Fri, Dec 06, 2024 at 10:11:06AM +0000, Kevin Brodsky wrote: > >> If CONFIG_KPKEYS_HARDENED_PGTABLES is enabled, map p4d/pgd pages > >> using a privileged pkey (KPKEYS_PKEY_PGTABLES), so that they can > >> only be written under guard(kpkeys_hardened_pgtables). > >> > >> The case where pgd is not page-sized is not currently handled - > >> this is pending support for pkeys in kmem_cache. > >> > >> This patch is a no-op if CONFIG_KPKEYS_HARDENED_PGTABLES is disabled > >> (default). > > Should not this live in pagetable_*_[cd]tor() in generic code? > > This would certainly be preferable but it doesn't look like such helpers > exist for p4d/pgd. For p4d, we could potentially handle this in the > generic __p4d_alloc(), but I'm not sure we can assume that > p4d_alloc_one() won't be called from somewhere else. pgd_alloc() is > entirely arch-specific so not much we can do there.
Can't we add the missing pagetable_{p4d,pgd}_[cd]tor() functions. Yes, it will mean touching a bunch of arch code, but it shouldn't be hard.