Re: [PATCH -tip 1/2] Add "notrace" to RCU function headers used by ftrace.

Steven Rostedt
2009-08-24T23:38:52Z

On Mon, 24 Aug 2009, Paul E. McKenney wrote:

> Both rcu_read_lock_sched_notrace() and rcu_read_unlock_sched_notrace()
> are used by ftrace, and thus need to be marked "notrace". Unfortunately,
> my naive assumption that gcc would see the inner "notrace" does not hold.
> Kudos to Lai Jiangshan for noting this.
>
> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> ---
> include/linux/rcupdate.h | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
> index ec90fc3..8b4422c 100644
> --- a/include/linux/rcupdate.h
> +++ b/include/linux/rcupdate.h
> @@ -191,7 +191,7 @@ static inline void rcu_read_lock_sched(void)
> __acquire(RCU_SCHED);
> rcu_read_acquire();
> }
> -static inline void rcu_read_lock_sched_notrace(void)
> +static inline notrace void rcu_read_lock_sched_notrace(void)
> {
> preempt_disable_notrace();
> __acquire(RCU_SCHED);
> @@ -209,7 +209,7 @@ static inline void rcu_read_unlock_sched(void)
> __release(RCU_SCHED);
> preempt_enable();
> }
> -static inline void rcu_read_unlock_sched_notrace(void)
> +static inline notrace void rcu_read_unlock_sched_notrace(void)

Funny, inlines should not be traced. Is gcc ignoring the inlines here?

-- Steve

> {
> rcu_read_release();
> __release(RCU_SCHED);
> --
> 1.5.2.5
>
>