LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Ellerman <mpe@kernel.org>
To: Ard Biesheuvel <ardb@kernel.org>,
	"Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	linux-kernel@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org,
	Madhavan Srinivasan <maddy@linux.ibm.com>,
	Nicholas Piggin <npiggin@gmail.com>
Subject: Re: [PATCH resend] powerpc/code-patching: Avoid r/w mapping of the zero page
Date: Fri, 22 May 2026 16:51:46 +1000	[thread overview]
Message-ID: <f8cdb51e-d329-4472-b7a1-68ab80b3f199@kernel.org> (raw)
In-Reply-To: <bc13fc3e-96eb-4aa9-a8d8-f7cf0c4cd505@app.fastmail.com>

On 20/5/2026 20:16, Ard Biesheuvel wrote:
> 
> On Wed, 20 May 2026, at 11:59, Christophe Leroy (CS GROUP) wrote:
>> Le 20/05/2026 à 11:40, Ard Biesheuvel a écrit :
>>>
>>> On Wed, 20 May 2026, at 11:36, Christophe Leroy (CS GROUP) wrote:
>>>> Le 20/05/2026 à 10:54, Ard Biesheuvel a écrit :
...
>>>>> diff --git a/arch/powerpc/lib/code-patching.c b/arch/powerpc/lib/code-patching.c
>>>>> index f84e0337cc02..13a8acf851f1 100644
>>>>> --- a/arch/powerpc/lib/code-patching.c
>>>>> +++ b/arch/powerpc/lib/code-patching.c
>>>>> @@ -60,7 +60,7 @@ struct patch_context {
>>>>>     
>>>>>     static DEFINE_PER_CPU(struct patch_context, cpu_patching_context);
>>>>>     
>>>>> -static int map_patch_area(void *addr, unsigned long text_poke_addr);
>>>>> +static int map_patch_area(unsigned long text_poke_addr);
>>>>>     static void unmap_patch_area(unsigned long addr);
>>>>>     
>>>>>     static bool mm_patch_enabled(void)
>>>>> @@ -117,7 +117,7 @@ static int text_area_cpu_up(unsigned int cpu)
>>>>>     
>>>>>     	// Map/unmap the area to ensure all page tables are pre-allocated
>>>>>     	addr = (unsigned long)area->addr;
>>>>> -	err = map_patch_area(empty_zero_page, addr);
>>>>> +	err = map_patch_area(addr);
>>>>
>>>> I would get rid of map_patch_area() completely and just do:
>>>>
>>>> 	err = map_kernel_page(addr, __pa_symbol(empty_zero_page), PAGE_KERNEL_RO);
>>>>
>>>
>>> I think retaining the symmetry of map_patch_area() and unmap_patch_area()
>>> makes sense too.
>>
>> Could also drop unmap_patch_area() and use unmap_kernel_page() instead.
>>
> 
> Good point. That way, we'll end up with
> 
>   arch/powerpc/lib/code-patching.c | 52 ++--------------------------------------
>   1 file changed, 2 insertions(+), 50 deletions(-
> 
> I'll spin a v2 with those changes once everyone on cc has had the opportunity
> to chime in.

That diffstat is definitely attractive.

I do like that unmap_patch_area() is more defensive with the page table 
walk, but it's probably overly paranoid. If page table levels have 
vanished since we just mapped them then the system is probably toast anyway.

So OK by me.

cheers


      reply	other threads:[~2026-05-22  6:51 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-20  8:54 [PATCH resend] powerpc/code-patching: Avoid r/w mapping of the zero page Ard Biesheuvel
2026-05-20  9:36 ` Christophe Leroy (CS GROUP)
2026-05-20  9:40   ` Ard Biesheuvel
2026-05-20  9:59     ` Christophe Leroy (CS GROUP)
2026-05-20 10:16       ` Ard Biesheuvel
2026-05-22  6:51         ` Michael Ellerman [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f8cdb51e-d329-4472-b7a1-68ab80b3f199@kernel.org \
    --to=mpe@kernel.org \
    --cc=ardb@kernel.org \
    --cc=chleroy@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maddy@linux.ibm.com \
    --cc=npiggin@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox