All of lore.kernel.org
 help / color / mirror / Atom feed
* FAILED: patch "[PATCH] powerpc/lib: fix book3s/32 boot failure due to code patching" failed to apply to 4.18-stable tree
@ 2018-10-11  6:16 gregkh
  2018-10-11  6:29 ` Christophe LEROY
  0 siblings, 1 reply; 3+ messages in thread
From: gregkh @ 2018-10-11  6:16 UTC (permalink / raw)
  To: christophe.leroy, mpe; +Cc: stable


The patch below does not apply to the 4.18-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

>From b45ba4a51cde29b2939365ef0c07ad34c8321789 Mon Sep 17 00:00:00 2001
From: Christophe Leroy <christophe.leroy@c-s.fr>
Date: Mon, 1 Oct 2018 12:21:10 +0000
Subject: [PATCH] powerpc/lib: fix book3s/32 boot failure due to code patching

Commit 51c3c62b58b3 ("powerpc: Avoid code patching freed init
sections") accesses 'init_mem_is_free' flag too early, before the
kernel is relocated. This provokes early boot failure (before the
console is active).

As it is not necessary to do this verification that early, this
patch moves the test into patch_instruction() instead of
__patch_instruction().

This modification also has the advantage of avoiding unnecessary
remappings.

Fixes: 51c3c62b58b3 ("powerpc: Avoid code patching freed init sections")
Cc: stable@vger.kernel.org # 4.13+
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>

diff --git a/arch/powerpc/lib/code-patching.c b/arch/powerpc/lib/code-patching.c
index 6ae2777c220d..5ffee298745f 100644
--- a/arch/powerpc/lib/code-patching.c
+++ b/arch/powerpc/lib/code-patching.c
@@ -28,12 +28,6 @@ static int __patch_instruction(unsigned int *exec_addr, unsigned int instr,
 {
 	int err;
 
-	/* Make sure we aren't patching a freed init section */
-	if (init_mem_is_free && init_section_contains(exec_addr, 4)) {
-		pr_debug("Skipping init section patching addr: 0x%px\n", exec_addr);
-		return 0;
-	}
-
 	__put_user_size(instr, patch_addr, 4, err);
 	if (err)
 		return err;
@@ -148,7 +142,7 @@ static inline int unmap_patch_area(unsigned long addr)
 	return 0;
 }
 
-int patch_instruction(unsigned int *addr, unsigned int instr)
+static int do_patch_instruction(unsigned int *addr, unsigned int instr)
 {
 	int err;
 	unsigned int *patch_addr = NULL;
@@ -188,12 +182,22 @@ int patch_instruction(unsigned int *addr, unsigned int instr)
 }
 #else /* !CONFIG_STRICT_KERNEL_RWX */
 
-int patch_instruction(unsigned int *addr, unsigned int instr)
+static int do_patch_instruction(unsigned int *addr, unsigned int instr)
 {
 	return raw_patch_instruction(addr, instr);
 }
 
 #endif /* CONFIG_STRICT_KERNEL_RWX */
+
+int patch_instruction(unsigned int *addr, unsigned int instr)
+{
+	/* Make sure we aren't patching a freed init section */
+	if (init_mem_is_free && init_section_contains(addr, 4)) {
+		pr_debug("Skipping init section patching addr: 0x%px\n", addr);
+		return 0;
+	}
+	return do_patch_instruction(addr, instr);
+}
 NOKPROBE_SYMBOL(patch_instruction);
 
 int patch_branch(unsigned int *addr, unsigned long target, int flags)

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

* Re: FAILED: patch "[PATCH] powerpc/lib: fix book3s/32 boot failure due to code patching" failed to apply to 4.18-stable tree
  2018-10-11  6:16 FAILED: patch "[PATCH] powerpc/lib: fix book3s/32 boot failure due to code patching" failed to apply to 4.18-stable tree gregkh
@ 2018-10-11  6:29 ` Christophe LEROY
  2018-10-11  9:41   ` Greg KH
  0 siblings, 1 reply; 3+ messages in thread
From: Christophe LEROY @ 2018-10-11  6:29 UTC (permalink / raw)
  To: gregkh, mpe; +Cc: stable

Greg,

You said in an previous email (below) that you had it queue for 4.18, 
was in a discution about the application of 51c3c62b58b3

Are you trying to apply twice ?

Thanks
Christophe

Le 11/10/2018 � 08:16, gregkh@linuxfoundation.org a �crit�:
> 
> The patch below does not apply to the 4.18-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@vger.kernel.org>.
> 
> thanks,
> 
> greg k-h
> 


Le 08/10/2018 � 15:29, Greg KH a �crit :
 > On Sun, Oct 07, 2018 at 09:22:34AM +0200, Christophe LEROY wrote:
 >>
 >>
 >> Le 02/10/2018 � 15:22, Greg KH a �crit :
 >>> On Tue, Oct 02, 2018 at 02:24:32PM +0200, Christophe LEROY wrote:
 >>>> Hello,
 >>>>
 >>>> This patch breaks the boot on book3S/32. It shouldn't be applied 
without the
 >>>> following fix:
 >>>>
 >>>> https://patchwork.ozlabs.org/patch/977195/
 >>>
 >>> Ok, now dropped, if someone could remind me when this goes in to pull
 >>> both of them in, that would be great.
 >>>
 >>
 >>
 >> Hi,
 >>
 >> The fix is now in the mainline, commit
 >> b45ba4a51cde29b2939365ef0c07ad34c8321789
 >>
 >> So you can fetch both to stable tress.
 >
 > Now queued up to 4.18 only, 4.14 did not apply :(
 >
 > thanks,
 >
 > greg k-h
 >

> ------------------ original commit in Linus's tree ------------------
> 
>  From b45ba4a51cde29b2939365ef0c07ad34c8321789 Mon Sep 17 00:00:00 2001
> From: Christophe Leroy <christophe.leroy@c-s.fr>
> Date: Mon, 1 Oct 2018 12:21:10 +0000
> Subject: [PATCH] powerpc/lib: fix book3s/32 boot failure due to code patching
> 
> Commit 51c3c62b58b3 ("powerpc: Avoid code patching freed init
> sections") accesses 'init_mem_is_free' flag too early, before the
> kernel is relocated. This provokes early boot failure (before the
> console is active).
> 
> As it is not necessary to do this verification that early, this
> patch moves the test into patch_instruction() instead of
> __patch_instruction().
> 
> This modification also has the advantage of avoiding unnecessary
> remappings.
> 
> Fixes: 51c3c62b58b3 ("powerpc: Avoid code patching freed init sections")
> Cc: stable@vger.kernel.org # 4.13+
> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
> 
> diff --git a/arch/powerpc/lib/code-patching.c b/arch/powerpc/lib/code-patching.c
> index 6ae2777c220d..5ffee298745f 100644
> --- a/arch/powerpc/lib/code-patching.c
> +++ b/arch/powerpc/lib/code-patching.c
> @@ -28,12 +28,6 @@ static int __patch_instruction(unsigned int *exec_addr, unsigned int instr,
>   {
>   	int err;
>   
> -	/* Make sure we aren't patching a freed init section */
> -	if (init_mem_is_free && init_section_contains(exec_addr, 4)) {
> -		pr_debug("Skipping init section patching addr: 0x%px\n", exec_addr);
> -		return 0;
> -	}
> -
>   	__put_user_size(instr, patch_addr, 4, err);
>   	if (err)
>   		return err;
> @@ -148,7 +142,7 @@ static inline int unmap_patch_area(unsigned long addr)
>   	return 0;
>   }
>   
> -int patch_instruction(unsigned int *addr, unsigned int instr)
> +static int do_patch_instruction(unsigned int *addr, unsigned int instr)
>   {
>   	int err;
>   	unsigned int *patch_addr = NULL;
> @@ -188,12 +182,22 @@ int patch_instruction(unsigned int *addr, unsigned int instr)
>   }
>   #else /* !CONFIG_STRICT_KERNEL_RWX */
>   
> -int patch_instruction(unsigned int *addr, unsigned int instr)
> +static int do_patch_instruction(unsigned int *addr, unsigned int instr)
>   {
>   	return raw_patch_instruction(addr, instr);
>   }
>   
>   #endif /* CONFIG_STRICT_KERNEL_RWX */
> +
> +int patch_instruction(unsigned int *addr, unsigned int instr)
> +{
> +	/* Make sure we aren't patching a freed init section */
> +	if (init_mem_is_free && init_section_contains(addr, 4)) {
> +		pr_debug("Skipping init section patching addr: 0x%px\n", addr);
> +		return 0;
> +	}
> +	return do_patch_instruction(addr, instr);
> +}
>   NOKPROBE_SYMBOL(patch_instruction);
>   
>   int patch_branch(unsigned int *addr, unsigned long target, int flags)
> 

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

* Re: FAILED: patch "[PATCH] powerpc/lib: fix book3s/32 boot failure due to code patching" failed to apply to 4.18-stable tree
  2018-10-11  6:29 ` Christophe LEROY
@ 2018-10-11  9:41   ` Greg KH
  0 siblings, 0 replies; 3+ messages in thread
From: Greg KH @ 2018-10-11  9:41 UTC (permalink / raw)
  To: Christophe LEROY; +Cc: mpe, stable

On Thu, Oct 11, 2018 at 08:29:46AM +0200, Christophe LEROY wrote:
> Greg,
> 
> You said in an previous email (below) that you had it queue for 4.18, was in
> a discution about the application of 51c3c62b58b3
> 
> Are you trying to apply twice ?

No, I had not gotten to those older ones yet.  I've now fixed this all
up.  I think...

greg k-h

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

end of thread, other threads:[~2018-10-11 17:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-11  6:16 FAILED: patch "[PATCH] powerpc/lib: fix book3s/32 boot failure due to code patching" failed to apply to 4.18-stable tree gregkh
2018-10-11  6:29 ` Christophe LEROY
2018-10-11  9:41   ` Greg KH

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.