Masami Hiramatsu
f04f24fb7e
ftrace, kprobes: Fix a deadlock on ftrace_regex_lock
...
Fix a deadlock on ftrace_regex_lock which happens when setting
an enable_event trigger on dynamic kprobe event as below.
----
sh-2.05b# echo p vfs_symlink > kprobe_events
sh-2.05b# echo vfs_symlink:enable_event:kprobes:p_vfs_symlink_0 > set_ftrace_filter
=============================================
[ INFO: possible recursive locking detected ]
3.9.0+ #35 Not tainted
---------------------------------------------
sh/72 is trying to acquire lock:
(ftrace_regex_lock){+.+.+.}, at: [<ffffffff810ba6c1>] ftrace_set_hash+0x81/0x1f0
but task is already holding lock:
(ftrace_regex_lock){+.+.+.}, at: [<ffffffff810b7cbd>] ftrace_regex_write.isra.29.part.30+0x3d/0x220
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(ftrace_regex_lock);
lock(ftrace_regex_lock);
*** DEADLOCK ***
----
To fix that, this introduces a finer regex_lock for each ftrace_ops.
ftrace_regex_lock is too big of a lock which protects all
filter/notrace_hash operations, but it doesn't need to be a global
lock after supporting multiple ftrace_ops because each ftrace_ops
has its own filter/notrace_hash.
Link: http://lkml.kernel.org/r/20130509054417.30398.84254.stgit@mhiramat-M0-7522
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Oleg Nesterov <oleg@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Tom Zanussi <tom.zanussi@intel.com >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
[ Added initialization flag and automate mutex initialization for
non ftrace.c ftrace_probes. ]
Signed-off-by: Steven Rostedt <rostedt@goodmis.org >
2013-05-09 20:10:22 -04:00
..
2013-03-29 09:20:05 -07:00
2013-03-02 16:33:54 -08:00
2013-02-26 15:03:06 -08:00
2013-03-27 08:35:34 -07:00
2013-03-01 13:39:00 -08:00
2013-03-08 16:03:29 -08:00
2013-03-25 21:06:10 +00:00
2013-02-20 11:00:43 -08:00
2013-03-03 12:06:09 -08:00
2013-02-28 18:02:55 -08:00
2013-04-29 19:47:50 -07:00
2013-02-26 11:41:08 -08:00
2013-02-24 14:37:22 -05:00
2013-03-14 12:48:54 +00:00
2013-04-09 21:04:16 +02:00
2013-04-19 15:45:05 +02:00
2013-04-29 19:47:50 -07:00
2013-02-16 13:34:10 -08:00
2013-04-28 02:13:43 +01:00
2013-02-22 09:20:11 -08:00
2013-04-07 10:07:59 +01:00
2013-04-10 10:31:26 -04:00
2013-03-02 16:46:07 -08:00
2013-04-23 12:50:38 -07:00
2013-04-16 10:27:15 -06:00
2013-03-12 13:59:14 -07:00
2013-04-03 19:33:40 -04:00
2013-02-21 17:22:19 -08:00
2013-03-01 12:47:16 +01:00
2013-02-26 02:46:13 -05:00
2013-04-29 15:54:33 -07:00
2013-04-18 09:00:26 -07:00
2013-02-15 18:52:45 -08:00
2013-04-29 15:54:39 -07:00
2013-02-20 09:37:28 -05:00
2013-04-29 15:54:33 -07:00
2013-02-21 17:22:16 -08:00
2013-04-14 10:06:31 -07:00
2013-04-29 19:14:20 -07:00
2013-03-22 15:18:18 -07:00
2013-04-12 11:22:35 -07:00
2013-04-10 16:33:53 -07:00
2013-02-23 17:50:10 -08:00
2013-03-19 19:15:52 +01:00
2013-02-21 17:22:15 -08:00
2013-04-29 18:28:13 -07:00
2013-02-21 17:22:15 -08:00
2013-02-21 17:22:16 -08:00
2013-02-15 16:45:06 +01:00
2013-04-29 18:28:13 -07:00
2013-03-12 11:30:04 -07:00
2013-03-05 09:33:26 -08:00
2013-04-29 18:28:19 -07:00
2013-02-26 02:46:09 -05:00
2013-04-29 15:54:27 -07:00
2013-04-02 01:28:41 +02:00
2013-03-01 22:45:49 +00:00
2013-04-29 19:07:40 -07:00
2013-03-01 22:45:49 +00:00
2013-02-27 15:13:36 +05:30
2013-02-27 22:37:34 +05:30
2013-02-28 09:53:21 +05:30
2013-03-03 23:59:59 -08:00
2013-03-16 06:32:30 +01:00
2013-04-09 11:34:05 +01:00
2013-02-28 12:52:24 -08:00
2013-02-26 02:46:08 -05:00
2013-02-27 19:10:23 -08:00
2013-04-29 18:28:40 -07:00
2013-02-23 17:50:12 -08:00
2013-03-31 11:38:33 -07:00
2013-03-27 07:49:29 -07:00
2013-03-03 19:36:31 -08:00
2013-04-29 18:28:41 -07:00
2013-02-22 23:31:31 -05:00
2013-04-19 17:10:27 -04:00
2013-05-09 20:10:22 -04:00
2013-04-29 18:28:13 -07:00
2013-02-26 03:10:52 +11:00
2013-02-22 00:05:07 +01:00
2013-03-18 10:21:23 +01:00
2013-02-27 19:10:24 -08:00
2013-02-22 08:20:05 +01:00
2013-02-21 10:45:01 +01:00
2013-02-23 17:50:16 -08:00
2013-04-29 15:54:38 -07:00
2013-04-29 15:54:35 -07:00
2013-04-29 15:54:26 -07:00
2013-04-29 18:28:41 -07:00
2013-02-15 09:41:42 +01:00
2013-02-27 19:10:24 -08:00
2013-02-23 21:00:06 -05:00
2013-02-19 08:06:01 +01:00
2013-04-29 15:54:37 -07:00
2013-03-15 12:23:09 -07:00
2013-02-27 19:10:21 -08:00
2013-03-22 16:41:19 -07:00
2013-04-29 13:55:38 -07:00
2013-04-17 12:35:33 -07:00
2013-02-23 17:50:19 -08:00
2013-04-07 13:05:35 +03:00
2013-04-07 13:05:35 +03:00
2013-04-03 19:33:43 -04:00
2013-03-14 13:18:30 -07:00
2013-02-19 15:17:08 -05:00
2013-02-22 19:25:09 -08:00
2013-02-20 19:36:01 +01:00
2013-04-08 16:57:15 -07:00
2013-03-02 09:34:39 -08:00
2013-02-23 17:50:20 -08:00
2013-04-29 15:54:37 -07:00
2013-04-29 15:54:37 -07:00
2013-02-23 17:50:19 -08:00
2013-02-23 17:50:17 -08:00
2013-04-29 15:54:36 -07:00
2013-03-28 17:45:51 -07:00
2013-03-22 16:41:20 -07:00
2013-03-29 08:35:47 -07:00
2013-03-27 07:50:04 -07:00
2013-04-23 09:50:30 -06:00
2013-04-19 09:33:36 +02:00
2013-03-19 11:07:58 +08:00
2013-04-29 18:28:44 -07:00
2013-02-15 15:17:11 -05:00
2013-04-05 00:18:46 -04:00
2013-03-02 16:46:07 -08:00
2013-04-29 15:54:36 -07:00
2013-02-23 00:30:08 +01:00
2013-02-23 17:50:17 -08:00
2013-02-23 17:50:15 -08:00
2013-04-29 15:54:28 -07:00
2013-03-01 23:51:07 -05:00
2013-04-17 10:21:17 -06:00
2013-04-15 14:30:44 -06:00
2013-04-12 16:52:01 -06:00
2013-04-17 10:21:17 -06:00
2013-04-17 10:21:17 -06:00
2013-04-29 09:30:25 -07:00
2013-04-17 10:21:17 -06:00
2013-03-17 15:59:15 -07:00
2013-02-27 19:10:24 -08:00
2013-03-29 09:14:16 -07:00
2013-02-23 17:50:16 -08:00
2013-02-23 17:50:16 -08:00
2013-02-21 12:05:51 -08:00
2013-04-09 10:48:33 -07:00
2013-04-29 18:28:13 -07:00
2013-04-09 14:09:17 -04:00
2013-02-26 09:34:29 -08:00
2013-04-29 15:54:28 -07:00
2013-02-27 19:10:24 -08:00
2013-03-27 13:03:39 +00:00
2013-04-29 19:14:20 -07:00
2013-03-15 00:34:50 -04:00
2013-02-23 17:50:17 -08:00
2013-04-29 18:28:22 -07:00
2013-02-27 19:10:10 -08:00
2013-04-29 19:07:40 -07:00
2013-04-10 15:40:39 -04:00
2013-02-19 08:43:34 +01:00
2013-04-11 13:14:36 -07:00
2013-03-19 19:15:52 +01:00
2013-04-05 15:38:10 -04:00
2013-02-21 17:22:20 -08:00
2013-02-26 22:25:17 +01:00
2013-04-09 10:48:33 -07:00
2013-03-25 10:39:40 -07:00
2013-03-01 12:40:36 +01:00
2013-04-29 15:54:38 -07:00
2013-04-17 12:35:32 -07:00
2013-03-20 17:56:58 -04:00
2013-02-21 14:58:40 -08:00
2013-03-15 00:36:09 -04:00
2013-03-18 16:14:55 -07:00
2013-03-18 16:44:02 -07:00
2013-04-15 21:23:03 +01:00
2013-03-20 12:10:38 -04:00
2013-03-28 11:10:22 -07:00
2013-03-27 07:50:08 -07:00
2013-02-23 17:50:15 -08:00
2013-04-29 15:54:34 -07:00
2013-04-29 15:54:38 -07:00
2013-04-29 15:54:37 -07:00
2013-03-01 12:48:36 +01:00
2013-04-01 11:23:38 -07:00