]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
netconsole: add task name to extra data fields
authorBreno Leitao <leitao@debian.org>
Fri, 28 Feb 2025 12:50:22 +0000 (04:50 -0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 4 Mar 2025 14:28:28 +0000 (15:28 +0100)
This is the core patch for this whole patchset. Add support for
including the current task's name in netconsole's extra data output.
This adds a new append_taskname() function that writes the task name
(from current->comm) into the target's extradata buffer, similar to how
CPU numbers are handled.

The task name is included when the SYSDATA_TASKNAME field is set,
appearing in the format "taskname=<name>" in the output. This additional
context can help with debugging by showing which task generated each
console message.

Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/netconsole.c

index 9798b2b409e2663845cc09ebd7515eb9b7b799a5..098ea9eb02373d8bb6c8b9fd6e75a89cc4743dbc 100644 (file)
@@ -1179,12 +1179,19 @@ static int append_cpu_nr(struct netconsole_target *nt, int offset)
                         raw_smp_processor_id());
 }
 
+static int append_taskname(struct netconsole_target *nt, int offset)
+{
+       return scnprintf(&nt->extradata_complete[offset],
+                        MAX_EXTRADATA_ENTRY_LEN, " taskname=%s\n",
+                        current->comm);
+}
 /*
  * prepare_extradata - append sysdata at extradata_complete in runtime
  * @nt: target to send message to
  */
 static int prepare_extradata(struct netconsole_target *nt)
 {
+       u32 fields = SYSDATA_CPU_NR | SYSDATA_TASKNAME;
        int extradata_len;
 
        /* userdata was appended when configfs write helper was called
@@ -1192,11 +1199,13 @@ static int prepare_extradata(struct netconsole_target *nt)
         */
        extradata_len = nt->userdata_length;
 
-       if (!(nt->sysdata_fields & SYSDATA_CPU_NR))
+       if (!(nt->sysdata_fields & fields))
                goto out;
 
        if (nt->sysdata_fields & SYSDATA_CPU_NR)
                extradata_len += append_cpu_nr(nt, extradata_len);
+       if (nt->sysdata_fields & SYSDATA_TASKNAME)
+               extradata_len += append_taskname(nt, extradata_len);
 
        WARN_ON_ONCE(extradata_len >
                     MAX_EXTRADATA_ENTRY_LEN * MAX_EXTRADATA_ITEMS);