]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 6 Nov 2017 08:50:31 +0000 (09:50 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 6 Nov 2017 08:50:31 +0000 (09:50 +0100)
added patches:
fix-tracing-sample-code-warning.patch
tracing-samples-fix-creation-and-deletion-of-simple_thread_fn-creation.patch

queue-4.4/fix-tracing-sample-code-warning.patch [new file with mode: 0644]
queue-4.4/series
queue-4.4/tracing-samples-fix-creation-and-deletion-of-simple_thread_fn-creation.patch [new file with mode: 0644]

diff --git a/queue-4.4/fix-tracing-sample-code-warning.patch b/queue-4.4/fix-tracing-sample-code-warning.patch
new file mode 100644 (file)
index 0000000..f91bdbe
--- /dev/null
@@ -0,0 +1,35 @@
+From a0cb2b5c390151837b08e5f7bca4a6ecddbcd39c Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds@linux-foundation.org>
+Date: Fri, 27 Oct 2017 20:35:31 -0700
+Subject: Fix tracing sample code warning.
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit a0cb2b5c390151837b08e5f7bca4a6ecddbcd39c upstream.
+
+Commit 6575257c60e1 ("tracing/samples: Fix creation and deletion of
+simple_thread_fn creation") introduced a new warning due to using a
+boolean as a counter.
+
+Just make it "int".
+
+Fixes: 6575257c60e1 ("tracing/samples: Fix creation and deletion of simple_thread_fn creation")
+Cc: Steven Rostedt <rostedt@goodmis.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ samples/trace_events/trace-events-sample.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/samples/trace_events/trace-events-sample.c
++++ b/samples/trace_events/trace-events-sample.c
+@@ -78,7 +78,7 @@ static int simple_thread_fn(void *arg)
+ }
+ static DEFINE_MUTEX(thread_mutex);
+-static bool simple_thread_cnt;
++static int simple_thread_cnt;
+ void foo_bar_reg(void)
+ {
index b9f0e4579af6d590e5c6ec26d00a5d66d66ee2be..6abc43b2eb2d7a0ea911102e4452db233aa989f6 100644 (file)
@@ -11,3 +11,5 @@ ocfs2-fstrim-fix-start-offset-of-first-cluster-group-during-fstrim.patch
 perf-tools-fix-build-failure-on-perl-script-context.patch
 drm-msm-fix-potential-buffer-overflow-issue.patch
 drm-msm-fix-an-integer-overflow-test.patch
+tracing-samples-fix-creation-and-deletion-of-simple_thread_fn-creation.patch
+fix-tracing-sample-code-warning.patch
diff --git a/queue-4.4/tracing-samples-fix-creation-and-deletion-of-simple_thread_fn-creation.patch b/queue-4.4/tracing-samples-fix-creation-and-deletion-of-simple_thread_fn-creation.patch
new file mode 100644 (file)
index 0000000..aaabf3e
--- /dev/null
@@ -0,0 +1,73 @@
+From 6575257c60e1a26a5319ccf2b5ce5b6449001017 Mon Sep 17 00:00:00 2001
+From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
+Date: Tue, 17 Oct 2017 14:55:24 -0400
+Subject: tracing/samples: Fix creation and deletion of simple_thread_fn creation
+
+From: Steven Rostedt (VMware) <rostedt@goodmis.org>
+
+commit 6575257c60e1a26a5319ccf2b5ce5b6449001017 upstream.
+
+Commit 7496946a8 ("tracing: Add samples of DECLARE_EVENT_CLASS() and
+DEFINE_EVENT()") added template examples for all the events. It created a
+DEFINE_EVENT_FN() example which reused the foo_bar_reg and foo_bar_unreg
+functions.
+
+Enabling both the TRACE_EVENT_FN() and DEFINE_EVENT_FN() example trace
+events caused the foo_bar_reg to be called twice, creating the test thread
+twice. The foo_bar_unreg would remove it only once, even if it was called
+multiple times, leaving a thread existing when the module is unloaded,
+causing an oops.
+
+Add a ref count and allow foo_bar_reg() and foo_bar_unreg() be called by
+multiple trace events.
+
+Fixes: 7496946a8 ("tracing: Add samples of DECLARE_EVENT_CLASS() and DEFINE_EVENT()")
+Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ samples/trace_events/trace-events-sample.c |   14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+--- a/samples/trace_events/trace-events-sample.c
++++ b/samples/trace_events/trace-events-sample.c
+@@ -78,28 +78,36 @@ static int simple_thread_fn(void *arg)
+ }
+ static DEFINE_MUTEX(thread_mutex);
++static bool simple_thread_cnt;
+ void foo_bar_reg(void)
+ {
++      mutex_lock(&thread_mutex);
++      if (simple_thread_cnt++)
++              goto out;
++
+       pr_info("Starting thread for foo_bar_fn\n");
+       /*
+        * We shouldn't be able to start a trace when the module is
+        * unloading (there's other locks to prevent that). But
+        * for consistency sake, we still take the thread_mutex.
+        */
+-      mutex_lock(&thread_mutex);
+       simple_tsk_fn = kthread_run(simple_thread_fn, NULL, "event-sample-fn");
++ out:
+       mutex_unlock(&thread_mutex);
+ }
+ void foo_bar_unreg(void)
+ {
+-      pr_info("Killing thread for foo_bar_fn\n");
+-      /* protect against module unloading */
+       mutex_lock(&thread_mutex);
++      if (--simple_thread_cnt)
++              goto out;
++
++      pr_info("Killing thread for foo_bar_fn\n");
+       if (simple_tsk_fn)
+               kthread_stop(simple_tsk_fn);
+       simple_tsk_fn = NULL;
++ out:
+       mutex_unlock(&thread_mutex);
+ }