| From 098507ae3ec2331476fb52e85d4040c1cc6d0ef4 Mon Sep 17 00:00:00 2001 |
| From: Romain Izard <romain.izard.pro@gmail.com> |
| Date: Tue, 4 Mar 2014 10:09:39 +0100 |
| Subject: trace: module: Maintain a valid user count |
| |
| From: Romain Izard <romain.izard.pro@gmail.com> |
| |
| commit 098507ae3ec2331476fb52e85d4040c1cc6d0ef4 upstream. |
| |
| The replacement of the 'count' variable by two variables 'incs' and |
| 'decs' to resolve some race conditions during module unloading was done |
| in parallel with some cleanup in the trace subsystem, and was integrated |
| as a merge. |
| |
| Unfortunately, the formula for this replacement was wrong in the tracing |
| code, and the refcount in the traces was not usable as a result. |
| |
| Use 'count = incs - decs' to compute the user count. |
| |
| Link: http://lkml.kernel.org/p/1393924179-9147-1-git-send-email-romain.izard.pro@gmail.com |
| |
| Acked-by: Ingo Molnar <mingo@kernel.org> |
| Cc: Rusty Russell <rusty@rustcorp.com.au> |
| Cc: Frederic Weisbecker <fweisbec@gmail.com> |
| Fixes: c1ab9cab7509 "merge conflict resolution" |
| Signed-off-by: Romain Izard <romain.izard.pro@gmail.com> |
| Signed-off-by: Steven Rostedt <rostedt@goodmis.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| include/trace/events/module.h | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/include/trace/events/module.h |
| +++ b/include/trace/events/module.h |
| @@ -78,7 +78,7 @@ DECLARE_EVENT_CLASS(module_refcnt, |
| |
| TP_fast_assign( |
| __entry->ip = ip; |
| - __entry->refcnt = __this_cpu_read(mod->refptr->incs) + __this_cpu_read(mod->refptr->decs); |
| + __entry->refcnt = __this_cpu_read(mod->refptr->incs) - __this_cpu_read(mod->refptr->decs); |
| __assign_str(name, mod->name); |
| ), |
| |