linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/17] Fixup page directory freeing
@ 2019-12-11 12:07 Peter Zijlstra
  2019-12-11 12:07 ` [PATCH 01/17] sh/tlb: Fix PGTABLE_LEVELS > 2 Peter Zijlstra
                   ` (16 more replies)
  0 siblings, 17 replies; 38+ messages in thread
From: Peter Zijlstra @ 2019-12-11 12:07 UTC (permalink / raw)
  To: Will Deacon, Aneesh Kumar K.V, Andrew Morton, Nick Piggin,
	Peter Zijlstra
  Cc: linux-arch, linux-mm, linux-kernel, Yoshinori Sato, Rich Felker,
	David S. Miller, Helge Deller, Geert Uytterhoeven, Paul Burton,
	Tony Luck, Richard Henderson, Nick Hu, Paul Walmsley

Hi All,

While fixing a silly bug on SH (patch #1), I realized that even with the
trivial patch to restore prior behaviour, page directory freeing was still
broken.

The thing is, on anything SMP, freeing page directories should observe the
exact same order as normal page freeing:

 1) unhook page/directory
 2) TLB invalidate
 3) free page/directory

Without this any concurrent page-table walk could end up with a Use-after-Free.
This is esp. trivial for anything that has software page-table walkers
(HAVE_FAST_GUP / software TLB fill) or the hardware caches partial page-walks
(ie. caches page directories).

Even on UP this might give issues, since mmu_gather is preemptible these days.
An interrupt or preempted task accessing user pages might stumble into the free
page if the hardware caches page directories.

So I've converted everything to always observe the above order, simply so we
don't have to worry about it.

If however I've been over zealous and your arch/mmu really doesn't need this
and you're offended by this potentially superfluous code, please let me know
and I'll replace the patch with one that adds a comment describing your
rationale for why it is not needed.

Also included are some patches that rename/document some of the mmu gather
options.


^ permalink raw reply	[flat|nested] 38+ messages in thread

end of thread, other threads:[~2020-01-27 13:43 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-11 12:07 [PATCH 00/17] Fixup page directory freeing Peter Zijlstra
2019-12-11 12:07 ` [PATCH 01/17] sh/tlb: Fix PGTABLE_LEVELS > 2 Peter Zijlstra
2019-12-11 12:07 ` [PATCH 02/17] asm-gemeric/tlb: Remove stray function declarations Peter Zijlstra
2019-12-11 13:19   ` Geert Uytterhoeven
2019-12-11 12:07 ` [PATCH 03/17] asm-generic/tlb: Add missing CONFIG symbol Peter Zijlstra
2019-12-11 12:07 ` [PATCH 04/17] asm-generic/tlb: Rename HAVE_RCU_TABLE_FREE Peter Zijlstra
2019-12-11 12:07 ` [PATCH 05/17] asm-generic/tlb: Rename HAVE_RCU_TABLE_NO_INVALIDATE Peter Zijlstra
2019-12-16 12:31   ` Aneesh Kumar K.V
2019-12-16 12:37     ` Peter Zijlstra
2019-12-16 13:13       ` Aneesh Kumar K.V
2019-12-16 13:20         ` Peter Zijlstra
2019-12-16 13:40           ` Aneesh Kumar K.V
2019-12-16 13:54             ` Aneesh Kumar K.V
2019-12-16 14:50               ` Peter Zijlstra
2019-12-16 15:14                 ` Peter Zijlstra
2019-12-16 15:30                   ` Peter Zijlstra
2019-12-16 17:00                     ` Aneesh Kumar K.V
2019-12-17  8:51                   ` Peter Zijlstra
2019-12-16 14:00             ` Peter Zijlstra
2019-12-11 12:07 ` [PATCH 06/17] asm-generic/tlb: Rename HAVE_MMU_GATHER_PAGE_SIZE Peter Zijlstra
2019-12-11 12:07 ` [PATCH 07/17] asm-generic/tlb: Rename HAVE_MMU_GATHER_NO_GATHER Peter Zijlstra
2019-12-11 12:07 ` [PATCH 08/17] asm-generic/tlb: Provide MMU_GATHER_TABLE_FREE Peter Zijlstra
2019-12-12  9:30   ` Peter Zijlstra
2019-12-12  9:32   ` [PATCH mk-II " Peter Zijlstra
2020-01-26 15:52     ` Guenter Roeck
2020-01-27  8:11       ` Peter Zijlstra
2020-01-27  8:13         ` Aneesh Kumar K.V
2020-01-27 13:05           ` Peter Zijlstra
2020-01-27 13:42             ` Aneesh Kumar K.V
2019-12-11 12:07 ` [PATCH 09/17] sh/tlb: Fix __pmd_free_tlb() Peter Zijlstra
2019-12-11 12:07 ` [PATCH 10/17] sparc32/tlb: Fix __p*_free_tlb() Peter Zijlstra
2019-12-11 12:07 ` [PATCH 11/17] parisc/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 12/17] m68k/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 13/17] mips/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 14/17] ia64/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 15/17] alpha/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 16/17] nds32/tlb: " Peter Zijlstra
2019-12-11 12:07 ` [PATCH 17/17] riscv/tlb: " Peter Zijlstra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).