Subject: Re: linux-next: ftrace tree build failure

From: Ingo Molnar <[email-masked]>
Date: Mon, 25 Aug 2008 08:11:01 +0200

* Ingo Molnar <[email-masked]> wrote:

> > kernel/trace/ftrace.c:416: error: incompatible type for argument 1 of '_spin_lock_irqsave'
> > kernel/trace/ftrace.c:433: error: incompatible type for argument 1 of '_spin_lock_irqsave'
> > 
> > (This is after I have disabled CONFIG_FTRACE_MCOUNT_RECORD)
> 
> hm, how have you disabled it? It's not an interactive option and it's 
> always enabled when CONFIG_DYNAMIC_FTRACE is enabled. (that's how that 
> build failure never got discovered)

ah, i see the other thread now, about binutils version dependency. I've 
applied your fix as per the commit below.

	Ingo

>>From b2528d2a50942e9d546d3c2e29cde89336053a03 Mon Sep 17 00:00:00 2001
From: Stephen Rothwell <[email-masked]>
Date: Mon, 25 Aug 2008 13:08:44 +1000
Subject: [PATCH] ftrace: fix build failure

After disabling FTRACE_MCOUNT_RECORD via a patch, a dormant build
failure surfaced:

 kernel/trace/ftrace.c: In function 'ftrace_record_ip':
 kernel/trace/ftrace.c:416: error: incompatible type for argument 1 of '_spin_lock_irqsave'
 kernel/trace/ftrace.c:433: error: incompatible type for argument 1 of '_spin_lock_irqsave'

Introduced by commit 6dad8e07f4c10b17b038e84d29f3ca41c2e55cd0 ("ftrace:
add necessary locking for ftrace records").

Signed-off-by: Stephen Rothwell <[email-masked]>
Signed-off-by: Ingo Molnar <[email-masked]>
---
 kernel/trace/ftrace.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index dcc8f6b..2bc3eb5 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -161,8 +161,8 @@ static int __unregister_ftrace_function(struct ftrace_ops *ops)
  * not recorded via the compilation.
  */
 static DEFINE_SPINLOCK(ftrace_hash_lock);
-#define ftrace_hash_lock(flags)	  spin_lock_irqsave(ftrace_hash_lock, flags)
-#define ftrace_hash_unlock(flags) spin_lock_irqsave(ftrace_hash_lock, flags)
+#define ftrace_hash_lock(flags)	  spin_lock_irqsave(&ftrace_hash_lock, flags)
+#define ftrace_hash_unlock(flags) spin_lock_irqsave(&ftrace_hash_lock, flags)
 #else
 /* This is protected via the ftrace_lock with MCOUNT_RECORD. */
 #define ftrace_hash_lock(flags)   do { (void)flags; } while (0)