summaryrefslogtreecommitdiff
path: root/drivers/net/netconsole.c
diff options
context:
space:
mode:
authorBreno Leitao <leitao@debian.org>2025-02-28 04:50:22 -0800
committerPaolo Abeni <pabeni@redhat.com>2025-03-04 15:28:28 +0100
commitdd30ae533242495a724b37066cae1fb03ee6b601 (patch)
treedfd7d26ee106ece70e577cf6b8fae89a28bd1be7 /drivers/net/netconsole.c
parent09e877590bc28ae897b10f6b1becc29786fe1bd4 (diff)
netconsole: add task name to extra data fields
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>
Diffstat (limited to 'drivers/net/netconsole.c')
-rw-r--r--drivers/net/netconsole.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index 9798b2b409e2..098ea9eb0237 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -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);