2015-12-06 02:01:57

by Li Bin

[permalink] [raw]
Subject: [PATCH v2 0/5] ftrace: fix ftrace misleading comments for arch using it

Fix the following similar misleading comments of ftrace for arch
ia64/metag/powerpc/sh/x86:

Note: Due to modules and __init, code can
disappear and change, we need to protect against faulting
as well as code changing. We do this by using the
probe_kernel_* functions.

No real locking needed, this code is run through
kstop_machine, or before SMP starts.

Cc: Tony Luck <[email protected]>
Cc: Fenghua Yu <[email protected]>
Cc: [email protected]
Cc: James Hogan <[email protected]>
Cc: [email protected]
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Michael Ellerman <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: Thomas Gleixner <[email protected]>
"Cc: H. Peter Anvin" <[email protected]>
Cc: [email protected]

Li Bin (5):
ia64: ftrace: fix the comments for ftrace_modify_code
metag: ftrace: fix the comments for ftrace_modify_code
powerpc: ftrace: fix the comments for ftrace_modify_code
sh: ftrace: fix the comments for ftrace_modify_code
x86: ftrace: fix the comments for ftrace_modify_code_direct

arch/ia64/kernel/ftrace.c | 12 +++++-------
arch/metag/kernel/ftrace.c | 11 +++++------
arch/powerpc/kernel/ftrace.c | 12 +++++-------
arch/sh/kernel/ftrace.c | 12 +++++-------
arch/x86/kernel/ftrace.c | 12 +++++-------
5 files changed, 25 insertions(+), 34 deletions(-)


2015-12-06 02:01:28

by Li Bin

[permalink] [raw]
Subject: [PATCH v2 1/5] ia64: ftrace: fix the comments for ftrace_modify_code

There is no need to worry about module and __init text disappearing
case, because that ftrace has a module notifier that is called when
a module is being unloaded and before the text goes away and this
code grabs the ftrace_lock mutex and removes the module functions
from the ftrace list, such that it will no longer do any
modifications to that module's text, the update to make functions
be traced or not is done under the ftrace_lock mutex as well.
And by now, __init section codes should not been modified
by ftrace, because it is black listed in recordmcount.c and
ignored by ftrace.

Cc: Tony Luck <[email protected]>
Cc: Fenghua Yu <[email protected]>
Cc: [email protected]
Suggested-by: Steven Rostedt <[email protected]>
Signed-off-by: Li Bin <[email protected]>
---
arch/ia64/kernel/ftrace.c | 12 +++++-------
1 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/arch/ia64/kernel/ftrace.c b/arch/ia64/kernel/ftrace.c
index 3b0c2aa..cee411e 100644
--- a/arch/ia64/kernel/ftrace.c
+++ b/arch/ia64/kernel/ftrace.c
@@ -97,13 +97,11 @@ ftrace_modify_code(unsigned long ip, unsigned char *old_code,
unsigned char replaced[MCOUNT_INSN_SIZE];

/*
- * Note: Due to modules and __init, code can
- * disappear and change, we need to protect against faulting
- * as well as code changing. We do this by using the
- * probe_kernel_* functions.
- *
- * No real locking needed, this code is run through
- * kstop_machine, or before SMP starts.
+ * Note:
+ * We are paranoid about modifying text, as if a bug was to happen, it
+ * could cause us to read or write to someplace that could cause harm.
+ * Carefully read and modify the code with probe_kernel_*(), and make
+ * sure what we read is what we expected it to be before modifying it.
*/

if (!do_check)
--
1.7.1

2015-12-06 02:01:34

by Li Bin

[permalink] [raw]
Subject: [PATCH v2 2/5] metag: ftrace: fix the comments for ftrace_modify_code

There is no need to worry about module and __init text disappearing
case, because that ftrace has a module notifier that is called when
a module is being unloaded and before the text goes away and this
code grabs the ftrace_lock mutex and removes the module functions
from the ftrace list, such that it will no longer do any
modifications to that module's text, the update to make functions
be traced or not is done under the ftrace_lock mutex as well.
And by now, __init section codes should not been modified
by ftrace, because it is black listed in recordmcount.c and
ignored by ftrace.

Cc: James Hogan <[email protected]>
Cc: [email protected]
Suggested-by: Steven Rostedt <[email protected]>
Signed-off-by: Li Bin <[email protected]>
---
arch/metag/kernel/ftrace.c | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/arch/metag/kernel/ftrace.c b/arch/metag/kernel/ftrace.c
index ed1d685..ac8c039 100644
--- a/arch/metag/kernel/ftrace.c
+++ b/arch/metag/kernel/ftrace.c
@@ -54,12 +54,11 @@ static int ftrace_modify_code(unsigned long pc, unsigned char *old_code,
unsigned char replaced[MCOUNT_INSN_SIZE];

/*
- * Note: Due to modules and __init, code can
- * disappear and change, we need to protect against faulting
- * as well as code changing.
- *
- * No real locking needed, this code is run through
- * kstop_machine.
+ * Note:
+ * We are paranoid about modifying text, as if a bug was to happen, it
+ * could cause us to read or write to someplace that could cause harm.
+ * Carefully read and modify the code with probe_kernel_*(), and make
+ * sure what we read is what we expected it to be before modifying it.
*/

/* read the text we want to modify */
--
1.7.1

2015-12-06 02:01:54

by Li Bin

[permalink] [raw]
Subject: [PATCH v2 3/5] powerpc: ftrace: fix the comments for ftrace_modify_code

There is no need to worry about module and __init text disappearing
case, because that ftrace has a module notifier that is called when
a module is being unloaded and before the text goes away and this
code grabs the ftrace_lock mutex and removes the module functions
from the ftrace list, such that it will no longer do any
modifications to that module's text, the update to make functions
be traced or not is done under the ftrace_lock mutex as well.
And by now, __init section codes should not been modified
by ftrace, because it is black listed in recordmcount.c and
ignored by ftrace.

Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Michael Ellerman <[email protected]>
Cc: [email protected]
Suggested-by: Steven Rostedt <[email protected]>
Signed-off-by: Li Bin <[email protected]>
---
arch/powerpc/kernel/ftrace.c | 12 +++++-------
1 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c
index 44d4d8e..83e3c88 100644
--- a/arch/powerpc/kernel/ftrace.c
+++ b/arch/powerpc/kernel/ftrace.c
@@ -47,13 +47,11 @@ ftrace_modify_code(unsigned long ip, unsigned int old, unsigned int new)
unsigned int replaced;

/*
- * Note: Due to modules and __init, code can
- * disappear and change, we need to protect against faulting
- * as well as code changing. We do this by using the
- * probe_kernel_* functions.
- *
- * No real locking needed, this code is run through
- * kstop_machine, or before SMP starts.
+ * Note:
+ * We are paranoid about modifying text, as if a bug was to happen, it
+ * could cause us to read or write to someplace that could cause harm.
+ * Carefully read and modify the code with probe_kernel_*(), and make
+ * sure what we read is what we expected it to be before modifying it.
*/

/* read the text we want to modify */
--
1.7.1

2015-12-06 02:01:26

by Li Bin

[permalink] [raw]
Subject: [PATCH v2 4/5] sh: ftrace: fix the comments for ftrace_modify_code

There is no need to worry about module and __init text disappearing
case, because that ftrace has a module notifier that is called when
a module is being unloaded and before the text goes away and this
code grabs the ftrace_lock mutex and removes the module functions
from the ftrace list, such that it will no longer do any
modifications to that module's text, the update to make functions
be traced or not is done under the ftrace_lock mutex as well.
And by now, __init section codes should not been modified
by ftrace, because it is black listed in recordmcount.c and
ignored by ftrace.

Cc: [email protected]
Suggested-by: Steven Rostedt <[email protected]>
Signed-off-by: Li Bin <[email protected]>
---
arch/sh/kernel/ftrace.c | 12 +++++-------
1 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/arch/sh/kernel/ftrace.c b/arch/sh/kernel/ftrace.c
index 079d70e..38993e0 100644
--- a/arch/sh/kernel/ftrace.c
+++ b/arch/sh/kernel/ftrace.c
@@ -212,13 +212,11 @@ static int ftrace_modify_code(unsigned long ip, unsigned char *old_code,
unsigned char replaced[MCOUNT_INSN_SIZE];

/*
- * Note: Due to modules and __init, code can
- * disappear and change, we need to protect against faulting
- * as well as code changing. We do this by using the
- * probe_kernel_* functions.
- *
- * No real locking needed, this code is run through
- * kstop_machine, or before SMP starts.
+ * Note:
+ * We are paranoid about modifying text, as if a bug was to happen, it
+ * could cause us to read or write to someplace that could cause harm.
+ * Carefully read and modify the code with probe_kernel_*(), and make
+ * sure what we read is what we expected it to be before modifying it.
*/

/* read the text we want to modify */
--
1.7.1

2015-12-06 02:06:01

by Li Bin

[permalink] [raw]
Subject: [PATCH v2 5/5] x86: ftrace: fix the comments for ftrace_modify_code_direct

There is no need to worry about module and __init text disappearing
case, because that ftrace has a module notifier that is called when
a module is being unloaded and before the text goes away and this
code grabs the ftrace_lock mutex and removes the module functions
from the ftrace list, such that it will no longer do any
modifications to that module's text, the update to make functions
be traced or not is done under the ftrace_lock mutex as well.
And by now, __init section codes should not been modified
by ftrace, because it is black listed in recordmcount.c and
ignored by ftrace.

Cc: Thomas Gleixner <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: [email protected]
Suggested-by: Steven Rostedt <[email protected]>
Signed-off-by: Li Bin <[email protected]>
---
arch/x86/kernel/ftrace.c | 12 +++++-------
1 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
index 311bcf3..db0f6b1 100644
--- a/arch/x86/kernel/ftrace.c
+++ b/arch/x86/kernel/ftrace.c
@@ -106,13 +106,11 @@ ftrace_modify_code_direct(unsigned long ip, unsigned const char *old_code,
unsigned char replaced[MCOUNT_INSN_SIZE];

/*
- * Note: Due to modules and __init, code can
- * disappear and change, we need to protect against faulting
- * as well as code changing. We do this by using the
- * probe_kernel_* functions.
- *
- * No real locking needed, this code is run through
- * kstop_machine, or before SMP starts.
+ * Note:
+ * We are paranoid about modifying text, as if a bug was to happen, it
+ * could cause us to read or write to someplace that could cause harm.
+ * Carefully read and modify the code with probe_kernel_*(), and make
+ * sure what we read is what we expected it to be before modifying it.
*/

/* read the text we want to modify */
--
1.7.1

2015-12-23 17:33:51

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v2 2/5] metag: ftrace: fix the comments for ftrace_modify_code

On Sun, 6 Dec 2015 10:02:55 +0800
Li Bin <[email protected]> wrote:

> There is no need to worry about module and __init text disappearing
> case, because that ftrace has a module notifier that is called when
> a module is being unloaded and before the text goes away and this
> code grabs the ftrace_lock mutex and removes the module functions
> from the ftrace list, such that it will no longer do any
> modifications to that module's text, the update to make functions
> be traced or not is done under the ftrace_lock mutex as well.
> And by now, __init section codes should not been modified
> by ftrace, because it is black listed in recordmcount.c and
> ignored by ftrace.
>
> Cc: James Hogan <[email protected]>
> Cc: [email protected]
> Suggested-by: Steven Rostedt <[email protected]>
> Signed-off-by: Li Bin <[email protected]>

Hi, can I get a metag maintainer to ack this. Or you can take the patch
too.

-- Steve

> ---
> arch/metag/kernel/ftrace.c | 11 +++++------
> 1 files changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/arch/metag/kernel/ftrace.c b/arch/metag/kernel/ftrace.c
> index ed1d685..ac8c039 100644
> --- a/arch/metag/kernel/ftrace.c
> +++ b/arch/metag/kernel/ftrace.c
> @@ -54,12 +54,11 @@ static int ftrace_modify_code(unsigned long pc, unsigned char *old_code,
> unsigned char replaced[MCOUNT_INSN_SIZE];
>
> /*
> - * Note: Due to modules and __init, code can
> - * disappear and change, we need to protect against faulting
> - * as well as code changing.
> - *
> - * No real locking needed, this code is run through
> - * kstop_machine.
> + * Note:
> + * We are paranoid about modifying text, as if a bug was to happen, it
> + * could cause us to read or write to someplace that could cause harm.
> + * Carefully read and modify the code with probe_kernel_*(), and make
> + * sure what we read is what we expected it to be before modifying it.
> */
>
> /* read the text we want to modify */

2015-12-23 17:35:08

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v2 3/5] powerpc: ftrace: fix the comments for ftrace_modify_code

On Sun, 6 Dec 2015 10:02:56 +0800
Li Bin <[email protected]> wrote:

> There is no need to worry about module and __init text disappearing
> case, because that ftrace has a module notifier that is called when
> a module is being unloaded and before the text goes away and this
> code grabs the ftrace_lock mutex and removes the module functions
> from the ftrace list, such that it will no longer do any
> modifications to that module's text, the update to make functions
> be traced or not is done under the ftrace_lock mutex as well.
> And by now, __init section codes should not been modified
> by ftrace, because it is black listed in recordmcount.c and
> ignored by ftrace.
>
> Cc: Benjamin Herrenschmidt <[email protected]>
> Cc: Paul Mackerras <[email protected]>
> Cc: Michael Ellerman <[email protected]>
> Cc: [email protected]
> Suggested-by: Steven Rostedt <[email protected]>
> Signed-off-by: Li Bin <[email protected]>

Hi, can I get a POWERPC maintainer to ack this, or you can take it too.

-- Steve

> ---
> arch/powerpc/kernel/ftrace.c | 12 +++++-------
> 1 files changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c
> index 44d4d8e..83e3c88 100644
> --- a/arch/powerpc/kernel/ftrace.c
> +++ b/arch/powerpc/kernel/ftrace.c
> @@ -47,13 +47,11 @@ ftrace_modify_code(unsigned long ip, unsigned int old, unsigned int new)
> unsigned int replaced;
>
> /*
> - * Note: Due to modules and __init, code can
> - * disappear and change, we need to protect against faulting
> - * as well as code changing. We do this by using the
> - * probe_kernel_* functions.
> - *
> - * No real locking needed, this code is run through
> - * kstop_machine, or before SMP starts.
> + * Note:
> + * We are paranoid about modifying text, as if a bug was to happen, it
> + * could cause us to read or write to someplace that could cause harm.
> + * Carefully read and modify the code with probe_kernel_*(), and make
> + * sure what we read is what we expected it to be before modifying it.
> */
>
> /* read the text we want to modify */

2015-12-23 17:37:32

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v2 5/5] x86: ftrace: fix the comments for ftrace_modify_code_direct

On Sun, 6 Dec 2015 10:02:58 +0800
Li Bin <[email protected]> wrote:

> There is no need to worry about module and __init text disappearing
> case, because that ftrace has a module notifier that is called when
> a module is being unloaded and before the text goes away and this
> code grabs the ftrace_lock mutex and removes the module functions
> from the ftrace list, such that it will no longer do any
> modifications to that module's text, the update to make functions
> be traced or not is done under the ftrace_lock mutex as well.
> And by now, __init section codes should not been modified
> by ftrace, because it is black listed in recordmcount.c and
> ignored by ftrace.
>
> Cc: Thomas Gleixner <[email protected]>
> Cc: "H. Peter Anvin" <[email protected]>
> Cc: [email protected]
> Suggested-by: Steven Rostedt <[email protected]>
> Signed-off-by: Li Bin <[email protected]>
> ---
> arch/x86/kernel/ftrace.c | 12 +++++-------
> 1 files changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
> index 311bcf3..db0f6b1 100644
> --- a/arch/x86/kernel/ftrace.c
> +++ b/arch/x86/kernel/ftrace.c
> @@ -106,13 +106,11 @@ ftrace_modify_code_direct(unsigned long ip, unsigned const char *old_code,
> unsigned char replaced[MCOUNT_INSN_SIZE];
>
> /*
> - * Note: Due to modules and __init, code can
> - * disappear and change, we need to protect against faulting
> - * as well as code changing. We do this by using the
> - * probe_kernel_* functions.
> - *
> - * No real locking needed, this code is run through
> - * kstop_machine, or before SMP starts.
> + * Note:
> + * We are paranoid about modifying text, as if a bug was to happen, it
> + * could cause us to read or write to someplace that could cause harm.
> + * Carefully read and modify the code with probe_kernel_*(), and make
> + * sure what we read is what we expected it to be before modifying it.
> */

Thomas,

This has been now fixed. You want to ack it and I take it, or can you
take it. Or is there something else that should be fixed?

-- Steve

>
> /* read the text we want to modify */

2015-12-23 17:39:10

by James Hogan

[permalink] [raw]
Subject: Re: [PATCH v2 2/5] metag: ftrace: fix the comments for ftrace_modify_code

Hi Steven,

On Wed, Dec 23, 2015 at 12:33:46PM -0500, Steven Rostedt wrote:
> On Sun, 6 Dec 2015 10:02:55 +0800
> Li Bin <[email protected]> wrote:
>
> > There is no need to worry about module and __init text disappearing
> > case, because that ftrace has a module notifier that is called when
> > a module is being unloaded and before the text goes away and this
> > code grabs the ftrace_lock mutex and removes the module functions
> > from the ftrace list, such that it will no longer do any
> > modifications to that module's text, the update to make functions
> > be traced or not is done under the ftrace_lock mutex as well.
> > And by now, __init section codes should not been modified
> > by ftrace, because it is black listed in recordmcount.c and
> > ignored by ftrace.
> >
> > Cc: James Hogan <[email protected]>
> > Cc: [email protected]
> > Suggested-by: Steven Rostedt <[email protected]>
> > Signed-off-by: Li Bin <[email protected]>
>
> Hi, can I get a metag maintainer to ack this. Or you can take the patch
> too.

Yep, sorry for the delay,

Acked-by: James Hogan <[email protected]>

Cheers
James

>
> -- Steve
>
> > ---
> > arch/metag/kernel/ftrace.c | 11 +++++------
> > 1 files changed, 5 insertions(+), 6 deletions(-)
> >
> > diff --git a/arch/metag/kernel/ftrace.c b/arch/metag/kernel/ftrace.c
> > index ed1d685..ac8c039 100644
> > --- a/arch/metag/kernel/ftrace.c
> > +++ b/arch/metag/kernel/ftrace.c
> > @@ -54,12 +54,11 @@ static int ftrace_modify_code(unsigned long pc, unsigned char *old_code,
> > unsigned char replaced[MCOUNT_INSN_SIZE];
> >
> > /*
> > - * Note: Due to modules and __init, code can
> > - * disappear and change, we need to protect against faulting
> > - * as well as code changing.
> > - *
> > - * No real locking needed, this code is run through
> > - * kstop_machine.
> > + * Note:
> > + * We are paranoid about modifying text, as if a bug was to happen, it
> > + * could cause us to read or write to someplace that could cause harm.
> > + * Carefully read and modify the code with probe_kernel_*(), and make
> > + * sure what we read is what we expected it to be before modifying it.
> > */
> >
> > /* read the text we want to modify */
>


Attachments:
(No filename) (2.21 kB)
signature.asc (819.00 B)
Digital signature
Download all attachments

2015-12-29 13:36:46

by Thomas Gleixner

[permalink] [raw]
Subject: Re: [PATCH v2 5/5] x86: ftrace: fix the comments for ftrace_modify_code_direct

On Wed, 23 Dec 2015, Steven Rostedt wrote:
> On Sun, 6 Dec 2015 10:02:58 +0800
> Li Bin <[email protected]> wrote:
> > diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
> > index 311bcf3..db0f6b1 100644
> > --- a/arch/x86/kernel/ftrace.c
> > +++ b/arch/x86/kernel/ftrace.c
> > @@ -106,13 +106,11 @@ ftrace_modify_code_direct(unsigned long ip, unsigned const char *old_code,
> > unsigned char replaced[MCOUNT_INSN_SIZE];
> >
> > /*
> > - * Note: Due to modules and __init, code can
> > - * disappear and change, we need to protect against faulting
> > - * as well as code changing. We do this by using the
> > - * probe_kernel_* functions.
> > - *
> > - * No real locking needed, this code is run through
> > - * kstop_machine, or before SMP starts.
> > + * Note:
> > + * We are paranoid about modifying text, as if a bug was to happen, it
> > + * could cause us to read or write to someplace that could cause harm.
> > + * Carefully read and modify the code with probe_kernel_*(), and make
> > + * sure what we read is what we expected it to be before modifying it.
> > */
>
> Thomas,
>
> This has been now fixed. You want to ack it and I take it, or can you
> take it. Or is there something else that should be fixed?

Reviewed-by: Thomas Gleixner <[email protected]>