* [PATCH 01/11] tools headers: Add kprobes.h header
2020-02-18 2:41 [PATCH 00/11] Fix up liblockdep for 5.6-rc Sasha Levin
@ 2020-02-18 2:41 ` Sasha Levin
2020-02-18 2:41 ` [PATCH 02/11] tools headers: Add rcupdate.h header Sasha Levin
` (9 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Sasha Levin @ 2020-02-18 2:41 UTC (permalink / raw)
To: mingo, peterz
Cc: linux-kernel, tglx, jolsa, alexey.budankov, songliubraving, acme,
allison, Sasha Levin
This is now needed by liblockdep as a result of 2f43c6022d84 ("kprobes:
Prohibit probing on lockdep functions").
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/include/linux/kprobes.h | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tools/include/linux/kprobes.h
diff --git a/tools/include/linux/kprobes.h b/tools/include/linux/kprobes.h
new file mode 100644
index 0000000000000..f665725ea4d59
--- /dev/null
+++ b/tools/include/linux/kprobes.h
@@ -0,0 +1,7 @@
+#ifndef _TOOLS_LINUX_KPROBES_H_
+#define _TOOLS_LINUX_KPROBES_H_
+
+#define NOKPROBE_SYMBOL(x)
+#define nokprobe_inline
+
+#endif
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 02/11] tools headers: Add rcupdate.h header
2020-02-18 2:41 [PATCH 00/11] Fix up liblockdep for 5.6-rc Sasha Levin
2020-02-18 2:41 ` [PATCH 01/11] tools headers: Add kprobes.h header Sasha Levin
@ 2020-02-18 2:41 ` Sasha Levin
2020-02-18 2:41 ` [PATCH 03/11] tools/kernel.h: extend with dummy RCU functions Sasha Levin
` (8 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Sasha Levin @ 2020-02-18 2:41 UTC (permalink / raw)
To: mingo, peterz
Cc: linux-kernel, tglx, jolsa, alexey.budankov, songliubraving, acme,
allison, Sasha Levin
This is now needed by liblockdep as a result of a0b0fd53e1e6
("locking/lockdep: Free lock classes that are no longer in use").
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/include/linux/rcupdate.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
create mode 100644 tools/include/linux/rcupdate.h
diff --git a/tools/include/linux/rcupdate.h b/tools/include/linux/rcupdate.h
new file mode 100644
index 0000000000000..100e6edb54af1
--- /dev/null
+++ b/tools/include/linux/rcupdate.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LIBLOCKDEP_RCUPDATE_H_
+#define _LIBLOCKDEP_RCUPDATE_H_
+
+#define call_rcu(x, y)
+#define init_rcu_head(x)
+
+struct rcu_head {
+ char dummy;
+};
+
+#endif
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 03/11] tools/kernel.h: extend with dummy RCU functions
2020-02-18 2:41 [PATCH 00/11] Fix up liblockdep for 5.6-rc Sasha Levin
2020-02-18 2:41 ` [PATCH 01/11] tools headers: Add kprobes.h header Sasha Levin
2020-02-18 2:41 ` [PATCH 02/11] tools headers: Add rcupdate.h header Sasha Levin
@ 2020-02-18 2:41 ` Sasha Levin
2020-02-18 2:41 ` [PATCH 04/11] tools bitmap: add bitmap_andnot definition Sasha Levin
` (7 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Sasha Levin @ 2020-02-18 2:41 UTC (permalink / raw)
To: mingo, peterz
Cc: linux-kernel, tglx, jolsa, alexey.budankov, songliubraving, acme,
allison, Sasha Levin
These calls were added by 108c14858b9e ("locking/lockdep: Add support
for dynamic keys") and require no special handling in userspace, so just
add empty function definitions.
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/include/linux/kernel.h | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/tools/include/linux/kernel.h b/tools/include/linux/kernel.h
index cba226948a0ce..d2b3e1cc0218e 100644
--- a/tools/include/linux/kernel.h
+++ b/tools/include/linux/kernel.h
@@ -119,4 +119,11 @@ int scnprintf_pad(char * buf, size_t size, const char * fmt, ...);
#define current_gfp_context(k) 0
#define synchronize_rcu()
+static __maybe_unused int system_state;
+#define SYSTEM_SCHEDULING 0
+
+#define might_sleep()
+#define rcu_read_lock()
+#define rcu_read_unlock()
+
#endif
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 04/11] tools bitmap: add bitmap_andnot definition
2020-02-18 2:41 [PATCH 00/11] Fix up liblockdep for 5.6-rc Sasha Levin
` (2 preceding siblings ...)
2020-02-18 2:41 ` [PATCH 03/11] tools/kernel.h: extend with dummy RCU functions Sasha Levin
@ 2020-02-18 2:41 ` Sasha Levin
2020-02-18 2:41 ` [PATCH 05/11] tools/lib/lockdep: add definition required for IRQ flag tracing Sasha Levin
` (6 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Sasha Levin @ 2020-02-18 2:41 UTC (permalink / raw)
To: mingo, peterz
Cc: linux-kernel, tglx, jolsa, alexey.budankov, songliubraving, acme,
allison, Sasha Levin
Add definition of bitmap_andnot() and wire tools/lib/bitmap.c into
liblockdep.
This is needed as a result of de4643a77356 ("locking/lockdep: Reuse lock
chains that have been freed").
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/include/linux/bitmap.h | 10 ++++++++++
tools/lib/bitmap.c | 15 +++++++++++++++
tools/lib/lockdep/Build | 2 +-
3 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/tools/include/linux/bitmap.h b/tools/include/linux/bitmap.h
index 477a1cae513f2..ab5df035f8eda 100644
--- a/tools/include/linux/bitmap.h
+++ b/tools/include/linux/bitmap.h
@@ -18,6 +18,8 @@ int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
int __bitmap_equal(const unsigned long *bitmap1,
const unsigned long *bitmap2, unsigned int bits);
void bitmap_clear(unsigned long *map, unsigned int start, int len);
+int __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1,
+ const unsigned long *bitmap2, unsigned int bits);
#define BITMAP_FIRST_WORD_MASK(start) (~0UL << ((start) & (BITS_PER_LONG - 1)))
@@ -178,4 +180,12 @@ static inline int bitmap_equal(const unsigned long *src1,
return __bitmap_equal(src1, src2, nbits);
}
+static inline int bitmap_andnot(unsigned long *dst, const unsigned long *src1,
+ const unsigned long *src2, unsigned int nbits)
+{
+ if (small_const_nbits(nbits))
+ return (*dst = *src1 & ~(*src2) & BITMAP_LAST_WORD_MASK(nbits)) != 0;
+ return __bitmap_andnot(dst, src1, src2, nbits);
+}
+
#endif /* _PERF_BITOPS_H */
diff --git a/tools/lib/bitmap.c b/tools/lib/bitmap.c
index 5043747ef6c5f..b6bc037623fc1 100644
--- a/tools/lib/bitmap.c
+++ b/tools/lib/bitmap.c
@@ -86,3 +86,18 @@ int __bitmap_equal(const unsigned long *bitmap1,
return 1;
}
+
+int __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1,
+ const unsigned long *bitmap2, unsigned int bits)
+{
+ unsigned int k;
+ unsigned int lim = bits/BITS_PER_LONG;
+ unsigned long result = 0;
+
+ for (k = 0; k < lim; k++)
+ result |= (dst[k] = bitmap1[k] & ~bitmap2[k]);
+ if (bits % BITS_PER_LONG)
+ result |= (dst[k] = bitmap1[k] & ~bitmap2[k] &
+ BITMAP_LAST_WORD_MASK(bits));
+ return result != 0;
+}
diff --git a/tools/lib/lockdep/Build b/tools/lib/lockdep/Build
index 6f667355b0687..219a9e2d9e0ba 100644
--- a/tools/lib/lockdep/Build
+++ b/tools/lib/lockdep/Build
@@ -1 +1 @@
-liblockdep-y += common.o lockdep.o preload.o rbtree.o
+liblockdep-y += common.o lockdep.o preload.o rbtree.o ../../lib/bitmap.o
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 05/11] tools/lib/lockdep: add definition required for IRQ flag tracing
2020-02-18 2:41 [PATCH 00/11] Fix up liblockdep for 5.6-rc Sasha Levin
` (3 preceding siblings ...)
2020-02-18 2:41 ` [PATCH 04/11] tools bitmap: add bitmap_andnot definition Sasha Levin
@ 2020-02-18 2:41 ` Sasha Levin
2020-02-18 2:41 ` [PATCH 06/11] tools/kernel.h: add BUILD_BUG_ON_NOT_POWER_OF_2 macro Sasha Levin
` (5 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Sasha Levin @ 2020-02-18 2:41 UTC (permalink / raw)
To: mingo, peterz
Cc: linux-kernel, tglx, jolsa, alexey.budankov, songliubraving, acme,
allison, Sasha Levin
We are going to start building with CONFIG_TRACE_IRQFLAGS defined, so
let's wire up a few dummy variables in our task_struct.
This isn't needed in userspace, but due to some refactoring in
kernel-side lockdep it's easier to just wire it up and enable
CONFIG_TRACE_IRQFLAGS.
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/include/linux/lockdep.h | 8 ++++++++
tools/lib/lockdep/lockdep.c | 4 ++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/tools/include/linux/lockdep.h b/tools/include/linux/lockdep.h
index e56997288f2b0..3a9924d6d3ae8 100644
--- a/tools/include/linux/lockdep.h
+++ b/tools/include/linux/lockdep.h
@@ -23,6 +23,8 @@
#include "../../../include/linux/lockdep.h"
+static bool early_boot_irqs_disabled;
+
struct task_struct {
u64 curr_chain_key;
int lockdep_depth;
@@ -31,6 +33,12 @@ struct task_struct {
gfp_t lockdep_reclaim_gfp;
int pid;
int state;
+ int softirqs_enabled, hardirqs_enabled, softirqs_disabled, hardirqs_disabled, irq_events;
+ unsigned long softirq_disable_ip, softirq_enable_ip;
+ unsigned int softirq_disable_event, softirq_enable_event;
+ unsigned long hardirq_disable_ip, hardirq_enable_ip;
+ unsigned int hardirq_disable_event, hardirq_enable_event;
+ int softirq_context, hardirq_context;
char comm[17];
};
diff --git a/tools/lib/lockdep/lockdep.c b/tools/lib/lockdep/lockdep.c
index 348a9d0fb766a..9be12d233477a 100644
--- a/tools/lib/lockdep/lockdep.c
+++ b/tools/lib/lockdep/lockdep.c
@@ -15,10 +15,10 @@ u32 prandom_u32(void)
abort();
}
-void print_irqtrace_events(struct task_struct *curr)
+/*void print_irqtrace_events(struct task_struct *curr)
{
abort();
-}
+}*/
static struct new_utsname *init_utsname(void)
{
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 06/11] tools/kernel.h: add BUILD_BUG_ON_NOT_POWER_OF_2 macro
2020-02-18 2:41 [PATCH 00/11] Fix up liblockdep for 5.6-rc Sasha Levin
` (4 preceding siblings ...)
2020-02-18 2:41 ` [PATCH 05/11] tools/lib/lockdep: add definition required for IRQ flag tracing Sasha Levin
@ 2020-02-18 2:41 ` Sasha Levin
2020-02-18 2:41 ` [PATCH 07/11] tools bitmap: add bitmap_clear definition Sasha Levin
` (4 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Sasha Levin @ 2020-02-18 2:41 UTC (permalink / raw)
To: mingo, peterz
Cc: linux-kernel, tglx, jolsa, alexey.budankov, songliubraving, acme,
allison, Sasha Levin
This is now needed as a result of 12593b7467f9 ("locking/lockdep: Reduce
space occupied by stack traces").
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/include/linux/kernel.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/tools/include/linux/kernel.h b/tools/include/linux/kernel.h
index d2b3e1cc0218e..cc3d60623ca47 100644
--- a/tools/include/linux/kernel.h
+++ b/tools/include/linux/kernel.h
@@ -38,6 +38,12 @@
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
+/* Force a compilation error if a constant expression is not a power of 2 */
+#define __BUILD_BUG_ON_NOT_POWER_OF_2(n) \
+ BUILD_BUG_ON(((n) & ((n) - 1)) != 0)
+#define BUILD_BUG_ON_NOT_POWER_OF_2(n) \
+ BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0))
+
#ifndef max
#define max(x, y) ({ \
typeof(x) _max1 = (x); \
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 07/11] tools bitmap: add bitmap_clear definition
2020-02-18 2:41 [PATCH 00/11] Fix up liblockdep for 5.6-rc Sasha Levin
` (5 preceding siblings ...)
2020-02-18 2:41 ` [PATCH 06/11] tools/kernel.h: add BUILD_BUG_ON_NOT_POWER_OF_2 macro Sasha Levin
@ 2020-02-18 2:41 ` Sasha Levin
2020-02-18 2:41 ` [PATCH 08/11] tools/lib/lockdep: Hook up vsprintf, find_bit, hweight libraries Sasha Levin
` (3 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Sasha Levin @ 2020-02-18 2:41 UTC (permalink / raw)
To: mingo, peterz
Cc: linux-kernel, tglx, jolsa, alexey.budankov, songliubraving, acme,
allison, Sasha Levin
This is needed as a result of de4643a77356 ("locking/lockdep: Reuse lock
chains that have been freed").
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/lib/bitmap.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/tools/lib/bitmap.c b/tools/lib/bitmap.c
index b6bc037623fc1..873176c501e43 100644
--- a/tools/lib/bitmap.c
+++ b/tools/lib/bitmap.c
@@ -101,3 +101,23 @@ int __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1,
BITMAP_LAST_WORD_MASK(bits));
return result != 0;
}
+
+void bitmap_clear(unsigned long *map, unsigned int start, int len)
+{
+ unsigned long *p = map + BIT_WORD(start);
+ const unsigned int size = start + len;
+ int bits_to_clear = BITS_PER_LONG - (start % BITS_PER_LONG);
+ unsigned long mask_to_clear = BITMAP_FIRST_WORD_MASK(start);
+
+ while (len - bits_to_clear >= 0) {
+ *p &= ~mask_to_clear;
+ len -= bits_to_clear;
+ bits_to_clear = BITS_PER_LONG;
+ mask_to_clear = ~0UL;
+ p++;
+ }
+ if (len) {
+ mask_to_clear &= BITMAP_LAST_WORD_MASK(size);
+ *p &= ~mask_to_clear;
+ }
+}
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 08/11] tools/lib/lockdep: Hook up vsprintf, find_bit, hweight libraries
2020-02-18 2:41 [PATCH 00/11] Fix up liblockdep for 5.6-rc Sasha Levin
` (6 preceding siblings ...)
2020-02-18 2:41 ` [PATCH 07/11] tools bitmap: add bitmap_clear definition Sasha Levin
@ 2020-02-18 2:41 ` Sasha Levin
2020-02-18 2:41 ` [PATCH 09/11] tools/lib/lockdep: Enable building with CONFIG_TRACE_IRQFLAGS Sasha Levin
` (2 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Sasha Levin @ 2020-02-18 2:41 UTC (permalink / raw)
To: mingo, peterz
Cc: linux-kernel, tglx, jolsa, alexey.budankov, songliubraving, acme,
allison, Sasha Levin
They already exist in tools/lib/, and are now required by liblockdep, so
just add them to the build manifest.
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/lib/lockdep/Build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/lib/lockdep/Build b/tools/lib/lockdep/Build
index 219a9e2d9e0ba..1e7c25690b8ea 100644
--- a/tools/lib/lockdep/Build
+++ b/tools/lib/lockdep/Build
@@ -1 +1 @@
-liblockdep-y += common.o lockdep.o preload.o rbtree.o ../../lib/bitmap.o
+liblockdep-y += common.o lockdep.o preload.o rbtree.o ../../lib/bitmap.o ../../lib/vsprintf.o ../../lib/find_bit.o ../../lib/hweight.o
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 09/11] tools/lib/lockdep: Enable building with CONFIG_TRACE_IRQFLAGS
2020-02-18 2:41 [PATCH 00/11] Fix up liblockdep for 5.6-rc Sasha Levin
` (7 preceding siblings ...)
2020-02-18 2:41 ` [PATCH 08/11] tools/lib/lockdep: Hook up vsprintf, find_bit, hweight libraries Sasha Levin
@ 2020-02-18 2:41 ` Sasha Levin
2020-02-18 2:41 ` [PATCH 10/11] tools/lib/lockdep: New stacktrace API Sasha Levin
2020-02-18 2:41 ` [PATCH 11/11] tools/lib/lockdep: call lockdep_init_task on init Sasha Levin
10 siblings, 0 replies; 12+ messages in thread
From: Sasha Levin @ 2020-02-18 2:41 UTC (permalink / raw)
To: mingo, peterz
Cc: linux-kernel, tglx, jolsa, alexey.budankov, songliubraving, acme,
allison, Sasha Levin
At this point it's always enabled with CONFIG_PROVE_LOCKING, so it's
easier to enable it in liblockdep as well rather than try and fix up the
lockdep code.
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/lib/lockdep/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/lib/lockdep/Makefile b/tools/lib/lockdep/Makefile
index 9dafb8cb752fe..efb6b7980a009 100644
--- a/tools/lib/lockdep/Makefile
+++ b/tools/lib/lockdep/Makefile
@@ -78,7 +78,7 @@ export Q VERBOSE
INCLUDES = -I. -I./uinclude -I./include -I../../include $(CONFIG_INCLUDES)
# Set compile option CFLAGS if not set elsewhere
-CFLAGS ?= -g -DCONFIG_LOCKDEP -DCONFIG_STACKTRACE -DCONFIG_PROVE_LOCKING -DBITS_PER_LONG=__WORDSIZE -DLIBLOCKDEP_VERSION='"$(LIBLOCKDEP_VERSION)"' -rdynamic -O0 -g
+CFLAGS ?= -g -DCONFIG_LOCKDEP -DCONFIG_STACKTRACE -DCONFIG_PROVE_LOCKING -DCONFIG_TRACE_IRQFLAGS -DBITS_PER_LONG=__WORDSIZE -DLIBLOCKDEP_VERSION='"$(LIBLOCKDEP_VERSION)"' -rdynamic -O0 -g
CFLAGS += -fPIC
CFLAGS += -Wall
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 10/11] tools/lib/lockdep: New stacktrace API
2020-02-18 2:41 [PATCH 00/11] Fix up liblockdep for 5.6-rc Sasha Levin
` (8 preceding siblings ...)
2020-02-18 2:41 ` [PATCH 09/11] tools/lib/lockdep: Enable building with CONFIG_TRACE_IRQFLAGS Sasha Levin
@ 2020-02-18 2:41 ` Sasha Levin
2020-02-18 2:41 ` [PATCH 11/11] tools/lib/lockdep: call lockdep_init_task on init Sasha Levin
10 siblings, 0 replies; 12+ messages in thread
From: Sasha Levin @ 2020-02-18 2:41 UTC (permalink / raw)
To: mingo, peterz
Cc: linux-kernel, tglx, jolsa, alexey.budankov, songliubraving, acme,
allison, Sasha Levin
The kernel switched to using kernel/stacktrace.c, and the API slightly
changed.
Adjust it to make stack traces work again.
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/include/linux/stacktrace.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/tools/include/linux/stacktrace.h b/tools/include/linux/stacktrace.h
index ae343ac35bfa7..b290b98d883aa 100644
--- a/tools/include/linux/stacktrace.h
+++ b/tools/include/linux/stacktrace.h
@@ -15,10 +15,18 @@ static inline void print_stack_trace(struct stack_trace *trace, int spaces)
backtrace_symbols_fd((void **)trace->entries, trace->nr_entries, 1);
}
+static inline void stack_trace_print(const long unsigned int *entries, unsigned int nr, int spaces)
+{
+ backtrace_symbols_fd((void **)entries, nr, 1);
+}
+
#define save_stack_trace(trace) \
((trace)->nr_entries = \
backtrace((void **)(trace)->entries, (trace)->max_entries))
+#define stack_trace_save(e, m, x) \
+ backtrace((void **)(e), (m))
+
static inline int dump_stack(void)
{
void *array[64];
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 11/11] tools/lib/lockdep: call lockdep_init_task on init
2020-02-18 2:41 [PATCH 00/11] Fix up liblockdep for 5.6-rc Sasha Levin
` (9 preceding siblings ...)
2020-02-18 2:41 ` [PATCH 10/11] tools/lib/lockdep: New stacktrace API Sasha Levin
@ 2020-02-18 2:41 ` Sasha Levin
10 siblings, 0 replies; 12+ messages in thread
From: Sasha Levin @ 2020-02-18 2:41 UTC (permalink / raw)
To: mingo, peterz
Cc: linux-kernel, tglx, jolsa, alexey.budankov, songliubraving, acme,
allison, Sasha Levin
We now have to explicitly call lockdep_init_task() when starting up.
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/lib/lockdep/preload.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/lib/lockdep/preload.c b/tools/lib/lockdep/preload.c
index 8f1adbe887b2f..578fdeda9422c 100644
--- a/tools/lib/lockdep/preload.c
+++ b/tools/lib/lockdep/preload.c
@@ -9,6 +9,8 @@
#include "include/liblockdep/mutex.h"
#include "../../include/linux/rbtree.h"
+extern struct task_struct *__curr(void);
+
/**
* struct lock_lookup - liblockdep's view of a single unique lock
* @orig: pointer to the original pthread lock, used for lookups
@@ -421,6 +423,8 @@ __attribute__((constructor)) static void init_preload(void)
if (__init_state == done)
return;
+ lockdep_init_task(__curr());
+
#ifndef __GLIBC__
__init_state = prepare;
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread