[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1573679762-7774-3-git-send-email-divya.indi@oracle.com>
Date: Wed, 13 Nov 2019 13:15:59 -0800
From: Divya Indi <divya.indi@...cle.com>
To: Steven Rostedt <rostedt@...dmis.org>, linux-kernel@...r.kernel.org
Cc: Divya Indi <divya.indi@...cle.com>,
Aruna Ramakrishna <aruna.ramakrishna@...cle.com>,
Srinivas Eeda <srinivas.eeda@...cle.com>,
Joe Jin <joe.jin@...cle.com>,
Manjunath Patil <manjunath.b.patil@...cle.com>
Subject: [PATCH 2/5] tracing: Verify if trace array exists before destroying it.
A trace array can be destroyed from userspace or kernel. Verify if the
trace exists before proceeding to destroy/remove it.
Signed-off-by: Divya Indi <divya.indi@...cle.com>
Reviewed-by: Aruna Ramakrishna <aruna.ramakrishna@...cle.com>
Reviewed-by: Manjunath Patil <manjunath.b.patil@...cle.com>
---
kernel/trace/trace.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 1c80521..bff967f 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -8421,17 +8421,26 @@ static int __remove_instance(struct trace_array *tr)
return 0;
}
-int trace_array_destroy(struct trace_array *tr)
+int trace_array_destroy(struct trace_array *this_tr)
{
+ struct trace_array *tr;
int ret;
- if (!tr)
+ if (!this_tr)
return -EINVAL;
mutex_lock(&event_mutex);
mutex_lock(&trace_types_lock);
- ret = __remove_instance(tr);
+ ret = -ENODEV;
+
+ /* Making sure trace array exists before destroying it. */
+ list_for_each_entry(tr, &ftrace_trace_arrays, list) {
+ if (tr == this_tr) {
+ ret = __remove_instance(tr);
+ break;
+ }
+ }
mutex_unlock(&trace_types_lock);
mutex_unlock(&event_mutex);
--
1.8.3.1
Powered by blists - more mailing lists