public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] livepatch: RCU protect struct klp_func all the time when used in klp_ftrace_handler()
@ 2015-02-18 17:02 Petr Mladek
  2015-02-20 23:29 ` Jiri Kosina
  2015-02-22 22:03 ` Jiri Kosina
  0 siblings, 2 replies; 4+ messages in thread
From: Petr Mladek @ 2015-02-18 17:02 UTC (permalink / raw)
  To: jpoimboe, sjenning, jkosina, vojtech
  Cc: masami.hiramatsu.pt, mbenes, live-patching, linux-kernel,
	Petr Mladek

func->new_func has been accessed after rcu_read_unlock() in klp_ftrace_handler()
and therefore the access was not protected.

Signed-off-by: Petr Mladek <pmladek@suse.cz>
---
 kernel/livepatch/core.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
index ff7f47d026ac..cde66192e20e 100644
--- a/kernel/livepatch/core.c
+++ b/kernel/livepatch/core.c
@@ -314,12 +314,12 @@ static void notrace klp_ftrace_handler(unsigned long ip,
 	rcu_read_lock();
 	func = list_first_or_null_rcu(&ops->func_stack, struct klp_func,
 				      stack_node);
-	rcu_read_unlock();
-
 	if (WARN_ON_ONCE(!func))
-		return;
+		goto unlock;
 
 	klp_arch_set_pc(regs, (unsigned long)func->new_func);
+unlock:
+	rcu_read_unlock();
 }
 
 static int klp_disable_func(struct klp_func *func)
-- 
1.8.5.6


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-02-22 22:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-18 17:02 [PATCH] livepatch: RCU protect struct klp_func all the time when used in klp_ftrace_handler() Petr Mladek
2015-02-20 23:29 ` Jiri Kosina
2015-02-21  3:52   ` Josh Poimboeuf
2015-02-22 22:03 ` Jiri Kosina

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox