linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] livepatch: Remove klp_arch_set_pc() and asm/livepatch.h
@ 2022-03-28  6:26 Christophe Leroy
  2022-03-28 10:23 ` Peter Zijlstra
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Christophe Leroy @ 2022-03-28  6:26 UTC (permalink / raw)
  To: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Petr Mladek,
	Joe Lawrence, Michael Ellerman, Benjamin Herrenschmidt,
	Paul Mackerras, Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Thomas Gleixner,
	Ingo Molnar, Borislav Petkov, Dave Hansen, H. Peter Anvin
  Cc: Christophe Leroy, linux-kernel, live-patching, linuxppc-dev,
	linux-s390, x86

All three versions of klp_arch_set_pc() do exactly the same: they
call ftrace_instruction_pointer_set().

Call ftrace_instruction_pointer_set() directly and remove
klp_arch_set_pc().

As klp_arch_set_pc() was the only thing remaining in asm/livepatch.h
on x86 and s390, remove asm/livepatch.h

livepatch.h remains on powerpc but its content is exclusively used
by powerpc specific code.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
---
 MAINTAINERS                          |  2 --
 arch/powerpc/include/asm/livepatch.h | 10 +---------
 arch/powerpc/kernel/irq.c            |  1 -
 arch/powerpc/kernel/setup_64.c       |  2 +-
 arch/s390/include/asm/livepatch.h    | 22 ----------------------
 arch/x86/include/asm/livepatch.h     | 20 --------------------
 include/linux/livepatch.h            |  2 --
 kernel/livepatch/patch.c             |  2 +-
 8 files changed, 3 insertions(+), 58 deletions(-)
 delete mode 100644 arch/s390/include/asm/livepatch.h
 delete mode 100644 arch/x86/include/asm/livepatch.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 1ef8327aef1f..cb5f0d4a8fcc 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -11253,8 +11253,6 @@ T:	git git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching.g
 F:	Documentation/ABI/testing/sysfs-kernel-livepatch
 F:	Documentation/livepatch/
 F:	arch/powerpc/include/asm/livepatch.h
-F:	arch/s390/include/asm/livepatch.h
-F:	arch/x86/include/asm/livepatch.h
 F:	include/linux/livepatch.h
 F:	kernel/livepatch/
 F:	lib/livepatch/
diff --git a/arch/powerpc/include/asm/livepatch.h b/arch/powerpc/include/asm/livepatch.h
index 1c60094ea0cd..d044a1fd4f44 100644
--- a/arch/powerpc/include/asm/livepatch.h
+++ b/arch/powerpc/include/asm/livepatch.h
@@ -7,17 +7,9 @@
 #ifndef _ASM_POWERPC_LIVEPATCH_H
 #define _ASM_POWERPC_LIVEPATCH_H
 
-#include <linux/module.h>
-#include <linux/ftrace.h>
+#include <linux/sched.h>
 #include <linux/sched/task_stack.h>
 
-#ifdef CONFIG_LIVEPATCH
-static inline void klp_arch_set_pc(struct ftrace_regs *fregs, unsigned long ip)
-{
-	ftrace_instruction_pointer_set(fregs, ip);
-}
-#endif /* CONFIG_LIVEPATCH */
-
 #ifdef CONFIG_LIVEPATCH_64
 static inline void klp_init_thread_info(struct task_struct *p)
 {
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index 1c4715a03cd1..8c20226bcc11 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -64,7 +64,6 @@
 #include <asm/machdep.h>
 #include <asm/udbg.h>
 #include <asm/smp.h>
-#include <asm/livepatch.h>
 #include <asm/hw_irq.h>
 #include <asm/softirq_stack.h>
 
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index e547066a06aa..2c1e9a5ac6ca 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -59,7 +59,7 @@
 #include <asm/udbg.h>
 #include <asm/kexec.h>
 #include <asm/code-patching.h>
-#include <asm/livepatch.h>
+#include <asm/ftrace.h>
 #include <asm/opal.h>
 #include <asm/cputhreads.h>
 #include <asm/hw_irq.h>
diff --git a/arch/s390/include/asm/livepatch.h b/arch/s390/include/asm/livepatch.h
deleted file mode 100644
index 5209f223331a..000000000000
--- a/arch/s390/include/asm/livepatch.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * livepatch.h - s390-specific Kernel Live Patching Core
- *
- *  Copyright (c) 2013-2015 SUSE
- *   Authors: Jiri Kosina
- *	      Vojtech Pavlik
- *	      Jiri Slaby
- */
-
-#ifndef ASM_LIVEPATCH_H
-#define ASM_LIVEPATCH_H
-
-#include <linux/ftrace.h>
-#include <asm/ptrace.h>
-
-static inline void klp_arch_set_pc(struct ftrace_regs *fregs, unsigned long ip)
-{
-	ftrace_instruction_pointer_set(fregs, ip);
-}
-
-#endif
diff --git a/arch/x86/include/asm/livepatch.h b/arch/x86/include/asm/livepatch.h
deleted file mode 100644
index 7c5cc6660e4b..000000000000
--- a/arch/x86/include/asm/livepatch.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * livepatch.h - x86-specific Kernel Live Patching Core
- *
- * Copyright (C) 2014 Seth Jennings <sjenning@redhat.com>
- * Copyright (C) 2014 SUSE
- */
-
-#ifndef _ASM_X86_LIVEPATCH_H
-#define _ASM_X86_LIVEPATCH_H
-
-#include <asm/setup.h>
-#include <linux/ftrace.h>
-
-static inline void klp_arch_set_pc(struct ftrace_regs *fregs, unsigned long ip)
-{
-	ftrace_instruction_pointer_set(fregs, ip);
-}
-
-#endif /* _ASM_X86_LIVEPATCH_H */
diff --git a/include/linux/livepatch.h b/include/linux/livepatch.h
index 2614247a9781..293e29960c6e 100644
--- a/include/linux/livepatch.h
+++ b/include/linux/livepatch.h
@@ -16,8 +16,6 @@
 
 #if IS_ENABLED(CONFIG_LIVEPATCH)
 
-#include <asm/livepatch.h>
-
 /* task patch states */
 #define KLP_UNDEFINED	-1
 #define KLP_UNPATCHED	 0
diff --git a/kernel/livepatch/patch.c b/kernel/livepatch/patch.c
index c172bf92b576..4c4f5a776d80 100644
--- a/kernel/livepatch/patch.c
+++ b/kernel/livepatch/patch.c
@@ -118,7 +118,7 @@ static void notrace klp_ftrace_handler(unsigned long ip,
 	if (func->nop)
 		goto unlock;
 
-	klp_arch_set_pc(fregs, (unsigned long)func->new_func);
+	ftrace_instruction_pointer_set(fregs, (unsigned long)func->new_func);
 
 unlock:
 	ftrace_test_recursion_unlock(bit);
-- 
2.35.1


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

* Re: [PATCH] livepatch: Remove klp_arch_set_pc() and asm/livepatch.h
  2022-03-28  6:26 [PATCH] livepatch: Remove klp_arch_set_pc() and asm/livepatch.h Christophe Leroy
@ 2022-03-28 10:23 ` Peter Zijlstra
  2022-03-29 10:46 ` Miroslav Benes
  2022-03-29 11:22 ` Petr Mladek
  2 siblings, 0 replies; 7+ messages in thread
From: Peter Zijlstra @ 2022-03-28 10:23 UTC (permalink / raw)
  To: Christophe Leroy
  Cc: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Petr Mladek,
	Joe Lawrence, Michael Ellerman, Benjamin Herrenschmidt,
	Paul Mackerras, Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Thomas Gleixner,
	Ingo Molnar, Borislav Petkov, Dave Hansen, H. Peter Anvin,
	linux-kernel, live-patching, linuxppc-dev, linux-s390, x86,
	Steven Rostedt

On Mon, Mar 28, 2022 at 08:26:48AM +0200, Christophe Leroy wrote:
> All three versions of klp_arch_set_pc() do exactly the same: they
> call ftrace_instruction_pointer_set().
> 
> Call ftrace_instruction_pointer_set() directly and remove
> klp_arch_set_pc().
> 
> As klp_arch_set_pc() was the only thing remaining in asm/livepatch.h
> on x86 and s390, remove asm/livepatch.h
> 
> livepatch.h remains on powerpc but its content is exclusively used
> by powerpc specific code.

The only remaining thing seems to be a klp_init_thread_info() for ppc64,
but yeah..

Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>

> diff --git a/kernel/livepatch/patch.c b/kernel/livepatch/patch.c
> index c172bf92b576..4c4f5a776d80 100644
> --- a/kernel/livepatch/patch.c
> +++ b/kernel/livepatch/patch.c
> @@ -118,7 +118,7 @@ static void notrace klp_ftrace_handler(unsigned long ip,
>  	if (func->nop)
>  		goto unlock;
>  
> -	klp_arch_set_pc(fregs, (unsigned long)func->new_func);
> +	ftrace_instruction_pointer_set(fregs, (unsigned long)func->new_func);
>  
>  unlock:
>  	ftrace_test_recursion_unlock(bit);

So ptrace has instruction_pointer_set(), I'm not sure why we have yet
another variant in the ftrace_ namespace. Perhaps also delete that?

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

* Re: [PATCH] livepatch: Remove klp_arch_set_pc() and asm/livepatch.h
  2022-03-28  6:26 [PATCH] livepatch: Remove klp_arch_set_pc() and asm/livepatch.h Christophe Leroy
  2022-03-28 10:23 ` Peter Zijlstra
@ 2022-03-29 10:46 ` Miroslav Benes
  2022-03-29 11:22 ` Petr Mladek
  2 siblings, 0 replies; 7+ messages in thread
From: Miroslav Benes @ 2022-03-29 10:46 UTC (permalink / raw)
  To: Christophe Leroy
  Cc: Josh Poimboeuf, Jiri Kosina, Petr Mladek, Joe Lawrence,
	Michael Ellerman, Benjamin Herrenschmidt, Paul Mackerras,
	Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Thomas Gleixner,
	Ingo Molnar, Borislav Petkov, Dave Hansen, H. Peter Anvin,
	linux-kernel, live-patching, linuxppc-dev, linux-s390, x86

On Mon, 28 Mar 2022, Christophe Leroy wrote:

> All three versions of klp_arch_set_pc() do exactly the same: they
> call ftrace_instruction_pointer_set().
> 
> Call ftrace_instruction_pointer_set() directly and remove
> klp_arch_set_pc().
> 
> As klp_arch_set_pc() was the only thing remaining in asm/livepatch.h
> on x86 and s390, remove asm/livepatch.h
> 
> livepatch.h remains on powerpc but its content is exclusively used
> by powerpc specific code.
> 
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>

Acked-by: Miroslav Benes <mbenes@suse.cz>

M

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

* Re: [PATCH] livepatch: Remove klp_arch_set_pc() and asm/livepatch.h
  2022-03-28  6:26 [PATCH] livepatch: Remove klp_arch_set_pc() and asm/livepatch.h Christophe Leroy
  2022-03-28 10:23 ` Peter Zijlstra
  2022-03-29 10:46 ` Miroslav Benes
@ 2022-03-29 11:22 ` Petr Mladek
  2022-05-23  6:51   ` Christophe Leroy
  2 siblings, 1 reply; 7+ messages in thread
From: Petr Mladek @ 2022-03-29 11:22 UTC (permalink / raw)
  To: Christophe Leroy
  Cc: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Joe Lawrence,
	Michael Ellerman, Benjamin Herrenschmidt, Paul Mackerras,
	Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Thomas Gleixner,
	Ingo Molnar, Borislav Petkov, Dave Hansen, H. Peter Anvin,
	linux-kernel, live-patching, linuxppc-dev, linux-s390, x86

On Mon 2022-03-28 08:26:48, Christophe Leroy wrote:
> All three versions of klp_arch_set_pc() do exactly the same: they
> call ftrace_instruction_pointer_set().
> 
> Call ftrace_instruction_pointer_set() directly and remove
> klp_arch_set_pc().
> 
> As klp_arch_set_pc() was the only thing remaining in asm/livepatch.h
> on x86 and s390, remove asm/livepatch.h
> 
> livepatch.h remains on powerpc but its content is exclusively used
> by powerpc specific code.
> 
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>

Acked-by: Petr Mladek <pmladek@suse.com>

I am going to take it via livepatch/livepatch.git for 5.19. We are
already in the middle of the merge window and this is not critical.

Best Regards,
Petr

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

* Re: [PATCH] livepatch: Remove klp_arch_set_pc() and asm/livepatch.h
  2022-03-29 11:22 ` Petr Mladek
@ 2022-05-23  6:51   ` Christophe Leroy
  2022-05-23 15:15     ` Petr Mladek
  0 siblings, 1 reply; 7+ messages in thread
From: Christophe Leroy @ 2022-05-23  6:51 UTC (permalink / raw)
  To: Petr Mladek
  Cc: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Joe Lawrence,
	Michael Ellerman, Benjamin Herrenschmidt, Paul Mackerras,
	Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Thomas Gleixner,
	Ingo Molnar, Borislav Petkov, Dave Hansen, H. Peter Anvin,
	linux-kernel, live-patching, linuxppc-dev, linux-s390, x86



Le 29/03/2022 à 13:22, Petr Mladek a écrit :
> On Mon 2022-03-28 08:26:48, Christophe Leroy wrote:
>> All three versions of klp_arch_set_pc() do exactly the same: they
>> call ftrace_instruction_pointer_set().
>>
>> Call ftrace_instruction_pointer_set() directly and remove
>> klp_arch_set_pc().
>>
>> As klp_arch_set_pc() was the only thing remaining in asm/livepatch.h
>> on x86 and s390, remove asm/livepatch.h
>>
>> livepatch.h remains on powerpc but its content is exclusively used
>> by powerpc specific code.
>>
>> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> 
> Acked-by: Petr Mladek <pmladek@suse.com>
> 
> I am going to take it via livepatch/livepatch.git for 5.19. We are
> already in the middle of the merge window and this is not critical.
> 

I haven't seen it in linux-next.

Do you still plan to take it for 5.19 ?

Thanks
Christophe

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

* Re: [PATCH] livepatch: Remove klp_arch_set_pc() and asm/livepatch.h
  2022-05-23  6:51   ` Christophe Leroy
@ 2022-05-23 15:15     ` Petr Mladek
  2022-06-02 12:50       ` Christophe Leroy
  0 siblings, 1 reply; 7+ messages in thread
From: Petr Mladek @ 2022-05-23 15:15 UTC (permalink / raw)
  To: Christophe Leroy
  Cc: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Joe Lawrence,
	Michael Ellerman, Benjamin Herrenschmidt, Paul Mackerras,
	Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Thomas Gleixner,
	Ingo Molnar, Borislav Petkov, Dave Hansen, H. Peter Anvin,
	linux-kernel, live-patching, linuxppc-dev, linux-s390, x86

On Mon 2022-05-23 06:51:47, Christophe Leroy wrote:
> 
> 
> Le 29/03/2022 à 13:22, Petr Mladek a écrit :
> > On Mon 2022-03-28 08:26:48, Christophe Leroy wrote:
> >> All three versions of klp_arch_set_pc() do exactly the same: they
> >> call ftrace_instruction_pointer_set().
> >>
> >> Call ftrace_instruction_pointer_set() directly and remove
> >> klp_arch_set_pc().
> >>
> >> As klp_arch_set_pc() was the only thing remaining in asm/livepatch.h
> >> on x86 and s390, remove asm/livepatch.h
> >>
> >> livepatch.h remains on powerpc but its content is exclusively used
> >> by powerpc specific code.
> >>
> >> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> > 
> > Acked-by: Petr Mladek <pmladek@suse.com>
> > 
> > I am going to take it via livepatch/livepatch.git for 5.19. We are
> > already in the middle of the merge window and this is not critical.
> > 
> 
> I haven't seen it in linux-next.
> 
> Do you still plan to take it for 5.19 ?

Thanks a lot for pointing this out. I have completely forgot about
this patch /o\

I have just pushed it into livepatching/livepatching.git,
branch for-5.19/cleanup.

I am going to create pull request for 5.19 by the end of this week
after it gets a spin in linux-next.

Best Regards,
Petr

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

* Re: [PATCH] livepatch: Remove klp_arch_set_pc() and asm/livepatch.h
  2022-05-23 15:15     ` Petr Mladek
@ 2022-06-02 12:50       ` Christophe Leroy
  0 siblings, 0 replies; 7+ messages in thread
From: Christophe Leroy @ 2022-06-02 12:50 UTC (permalink / raw)
  To: Petr Mladek
  Cc: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Joe Lawrence,
	Michael Ellerman, Benjamin Herrenschmidt, Paul Mackerras,
	Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Thomas Gleixner,
	Ingo Molnar, Borislav Petkov, Dave Hansen, H. Peter Anvin,
	linux-kernel, live-patching, linuxppc-dev, linux-s390, x86

Hi Petr,

Le 23/05/2022 à 17:15, Petr Mladek a écrit :
> On Mon 2022-05-23 06:51:47, Christophe Leroy wrote:
>>
>>
>> Le 29/03/2022 à 13:22, Petr Mladek a écrit :
>>> On Mon 2022-03-28 08:26:48, Christophe Leroy wrote:
>>>> All three versions of klp_arch_set_pc() do exactly the same: they
>>>> call ftrace_instruction_pointer_set().
>>>>
>>>> Call ftrace_instruction_pointer_set() directly and remove
>>>> klp_arch_set_pc().
>>>>
>>>> As klp_arch_set_pc() was the only thing remaining in asm/livepatch.h
>>>> on x86 and s390, remove asm/livepatch.h
>>>>
>>>> livepatch.h remains on powerpc but its content is exclusively used
>>>> by powerpc specific code.
>>>>
>>>> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
>>>
>>> Acked-by: Petr Mladek <pmladek@suse.com>
>>>
>>> I am going to take it via livepatch/livepatch.git for 5.19. We are
>>> already in the middle of the merge window and this is not critical.
>>>
>>
>> I haven't seen it in linux-next.
>>
>> Do you still plan to take it for 5.19 ?
> 
> Thanks a lot for pointing this out. I have completely forgot about
> this patch /o\
> 
> I have just pushed it into livepatching/livepatching.git,
> branch for-5.19/cleanup.
> 
> I am going to create pull request for 5.19 by the end of this week
> after it gets a spin in linux-next.
> 

I can't see it yet in linus mainline tree. Any issue ?

Thanks
Christophe

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

end of thread, other threads:[~2022-06-02 12:50 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-28  6:26 [PATCH] livepatch: Remove klp_arch_set_pc() and asm/livepatch.h Christophe Leroy
2022-03-28 10:23 ` Peter Zijlstra
2022-03-29 10:46 ` Miroslav Benes
2022-03-29 11:22 ` Petr Mladek
2022-05-23  6:51   ` Christophe Leroy
2022-05-23 15:15     ` Petr Mladek
2022-06-02 12:50       ` Christophe Leroy

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).