Re: [PATCH 1/2] mm/page_alloc: don't spin_trylock() in NMI on UP
"Brendan Jackman" <[email protected]>
| Newsgroups | dev.linux.lists.linux-rt-devel,org.kernel.vger.linux-kernel,org.kernel.vger.stable,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
On Tue Jul 14, 2026 at 9:52 AM UTC, Brendan Jackman wrote: > On Mon Jul 13, 2026 at 4:15 PM UTC, Harry Yoo wrote: >> >> >> On 7/13/26 11:31 PM, Brendan Jackman wrote: >>> On Sat Jul 11, 2026 at 12:03 AM UTC, Andrew Morton wrote: >>>> On Fri, 10 Jul 2026 10:42:20 +0000 Brendan Jackman <[email protected]> wrote: >>>> >>>>> As noted in can_spin_trylock(), using this is unsafe in this context. >>>>> commit 620b46ed6ae17 ("mm/page_alloc: return NULL early from >>>>> alloc_frozen_pages_nolock() in NMI on UP") fixed this on the alloc side >>>>> but missed the free side. >> >> Ouch, do we allow alloc_pages() -> free_pages_nolock()? >> Didn't notice. > > We don't explicitly disallow that but I'd say it's "forbidden by > default"... Oh, the BPF arena code does it. >>>> Also, Sashiko might have found yet more pre-existing issues: >>>> https://sashiko.dev/#/patchset/[email protected] >>> >>> There are 2 cases here: >>> >>> 1: !pcp_allowed_order() -> This is forbidden by alloc_order_allowed(), >>> quite a bad miss from Sashiko IMO. >> >> Hmm but alloc_order_allowed() would return true for !pcp_allowed_order() >> when spinning is allowed, then pages can be freed via >> free_pages_nolock()? So yeah Sashiko was right after all.