Patch "tracing: Fix sleeping while atomic in kdb ftdump" has been added to the 5.18-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    tracing: Fix sleeping while atomic in kdb ftdump

to the 5.18-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     tracing-fix-sleeping-while-atomic-in-kdb-ftdump.patch
and it can be found in the queue-5.18 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 8038429cae97fdfae64a7a784449952e3455081d
Author: Douglas Anderson <dianders@xxxxxxxxxxxx>
Date:   Fri Jul 8 17:09:52 2022 -0700

    tracing: Fix sleeping while atomic in kdb ftdump
    
    [ Upstream commit 495fcec8648cdfb483b5b9ab310f3839f07cb3b8 ]
    
    If you drop into kdb and type "ftdump" you'll get a sleeping while
    atomic warning from memory allocation in trace_find_next_entry().
    
    This appears to have been caused by commit ff895103a84a ("tracing:
    Save off entry when peeking at next entry"), which added the
    allocation in that path. The problematic commit was already fixed by
    commit 8e99cf91b99b ("tracing: Do not allocate buffer in
    trace_find_next_entry() in atomic") but that fix missed the kdb case.
    
    The fix here is easy: just move the assignment of the static buffer to
    the place where it should have been to begin with:
    trace_init_global_iter(). That function is called in two places, once
    is right before the assignment of the static buffer added by the
    previous fix and once is in kdb.
    
    Note that it appears that there's a second static buffer that we need
    to assign that was added in commit efbbdaa22bb7 ("tracing: Show real
    address for trace event arguments"), so we'll move that too.
    
    Link: https://lkml.kernel.org/r/20220708170919.1.I75844e5038d9425add2ad853a608cb44bb39df40@changeid
    
    Fixes: ff895103a84a ("tracing: Save off entry when peeking at next entry")
    Fixes: efbbdaa22bb7 ("tracing: Show real address for trace event arguments")
    Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
    Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 114c31bdf8f9..c0c98b0c86e7 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -9863,6 +9863,12 @@ void trace_init_global_iter(struct trace_iterator *iter)
 	/* Output in nanoseconds only if we are using a clock in nanoseconds. */
 	if (trace_clocks[iter->tr->clock_id].in_ns)
 		iter->iter_flags |= TRACE_FILE_TIME_IN_NS;
+
+	/* Can not use kmalloc for iter.temp and iter.fmt */
+	iter->temp = static_temp_buf;
+	iter->temp_size = STATIC_TEMP_BUF_SIZE;
+	iter->fmt = static_fmt_buf;
+	iter->fmt_size = STATIC_FMT_BUF_SIZE;
 }
 
 void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
@@ -9895,11 +9901,6 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
 
 	/* Simulate the iterator */
 	trace_init_global_iter(&iter);
-	/* Can not use kmalloc for iter.temp and iter.fmt */
-	iter.temp = static_temp_buf;
-	iter.temp_size = STATIC_TEMP_BUF_SIZE;
-	iter.fmt = static_fmt_buf;
-	iter.fmt_size = STATIC_FMT_BUF_SIZE;
 
 	for_each_tracing_cpu(cpu) {
 		atomic_inc(&per_cpu_ptr(iter.array_buffer->data, cpu)->disabled);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux