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
| ||
|
Message-ID: <dc5e01b7-010b-4fc7-867b-b738a05becd9@ghiti.fr> Date: Sun, 31 Dec 2023 07:24:22 +0100 From: Alexandre Ghiti <alex@...ti.fr> To: Jisheng Zhang <jszhang@...nel.org>, Paul Walmsley <paul.walmsley@...ive.com>, Palmer Dabbelt <palmer@...belt.com>, Albert Ou <aou@...s.berkeley.edu>, Will Deacon <will@...nel.org>, "Aneesh Kumar K . V" <aneesh.kumar@...ux.ibm.com>, Andrew Morton <akpm@...ux-foundation.org>, Nick Piggin <npiggin@...il.com>, Peter Zijlstra <peterz@...radead.org> Cc: linux-riscv@...ts.infradead.org, linux-kernel@...r.kernel.org, linux-arch@...r.kernel.org, linux-mm@...ck.org Subject: Re: [PATCH 2/4] riscv: tlb: convert __p*d_free_tlb() to inline functions On 19/12/2023 18:50, Jisheng Zhang wrote: > This is to prepare for enabling MMU_GATHER_RCU_TABLE_FREE. > No functionality changes. > > Signed-off-by: Jisheng Zhang <jszhang@...nel.org> > --- > arch/riscv/include/asm/pgalloc.h | 54 +++++++++++++++++++------------- > 1 file changed, 32 insertions(+), 22 deletions(-) > > diff --git a/arch/riscv/include/asm/pgalloc.h b/arch/riscv/include/asm/pgalloc.h > index a12fb83fa1f5..3c5e3bd15f46 100644 > --- a/arch/riscv/include/asm/pgalloc.h > +++ b/arch/riscv/include/asm/pgalloc.h > @@ -95,13 +95,16 @@ static inline void pud_free(struct mm_struct *mm, pud_t *pud) > __pud_free(mm, pud); > } > > -#define __pud_free_tlb(tlb, pud, addr) \ > -do { \ > - if (pgtable_l4_enabled) { \ > - pagetable_pud_dtor(virt_to_ptdesc(pud)); \ > - tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pud)); \ > - } \ > -} while (0) > +static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud, > + unsigned long addr) > +{ > + if (pgtable_l4_enabled) { > + struct ptdesc *ptdesc = virt_to_ptdesc(pud); > + > + pagetable_pud_dtor(ptdesc); > + tlb_remove_page_ptdesc(tlb, ptdesc); > + } > +} > > #define p4d_alloc_one p4d_alloc_one > static inline p4d_t *p4d_alloc_one(struct mm_struct *mm, unsigned long addr) > @@ -130,11 +133,12 @@ static inline void p4d_free(struct mm_struct *mm, p4d_t *p4d) > __p4d_free(mm, p4d); > } > > -#define __p4d_free_tlb(tlb, p4d, addr) \ > -do { \ > - if (pgtable_l5_enabled) \ > - tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(p4d)); \ > -} while (0) > +static inline void __p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d, > + unsigned long addr) > +{ > + if (pgtable_l5_enabled) > + tlb_remove_page_ptdesc(tlb, virt_to_ptdesc(p4d)); > +} > #endif /* __PAGETABLE_PMD_FOLDED */ > > static inline void sync_kernel_mappings(pgd_t *pgd) > @@ -159,19 +163,25 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm) > > #ifndef __PAGETABLE_PMD_FOLDED > > -#define __pmd_free_tlb(tlb, pmd, addr) \ > -do { \ > - pagetable_pmd_dtor(virt_to_ptdesc(pmd)); \ > - tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pmd)); \ > -} while (0) > +static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd, > + unsigned long addr) > +{ > + struct ptdesc *ptdesc = virt_to_ptdesc(pmd); > + > + pagetable_pmd_dtor(ptdesc); > + tlb_remove_page_ptdesc(tlb, ptdesc); > +} > > #endif /* __PAGETABLE_PMD_FOLDED */ > > -#define __pte_free_tlb(tlb, pte, buf) \ > -do { \ > - pagetable_pte_dtor(page_ptdesc(pte)); \ > - tlb_remove_page_ptdesc((tlb), page_ptdesc(pte));\ > -} while (0) > +static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, > + unsigned long addr) > +{ > + struct ptdesc *ptdesc = page_ptdesc(pte); > + > + pagetable_pte_dtor(ptdesc); > + tlb_remove_page_ptdesc(tlb, ptdesc); > +} > #endif /* CONFIG_MMU */ > > #endif /* _ASM_RISCV_PGALLOC_H */ You can add: Reviewed-by: Alexandre Ghiti <alexghiti@...osinc.com> Thanks, Alex
Powered by blists - more mailing lists