From nobody Tue Feb 10 01:19:40 2026 Received: from mail-oa1-f41.google.com (mail-oa1-f41.google.com [209.85.160.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CC1E644CF29 for ; Tue, 20 Jan 2026 16:24:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768926252; cv=none; b=skoEwiojzaLhQcp4jJKWL+bTbuN2OYX2owVi7ktNWmlAzx82QeGRGTAzo/wjLUrPVueLVf3KFq91otlI4vPv7bFADukpi2QcYnnuQ127v7J/INBZ89IA+FflUhW4bAXsb/cD5YNtshwXc4anTZBNgKhkQeqki1RANlgL4nmPBwo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768926252; c=relaxed/simple; bh=C3+2SHjtQfzMU1QwJyHpzEXry6g/X6KazovqMtfAam8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jCvX1jL+UAgEUiwlEBtjYTXscIs2tzSb++95KoIR0pPvqKh67Ja4qguO7H7mF3gzc9cCSUi+3QOqYrjyvQYU5f7EB8Gelmb6+IHQgLMfudW4a4MaFQntUDyvNTtpXXLkHszpyn6/xhAkt5FFBMJ6FxVWBJac8xv/bicmOXWAEJU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.160.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oa1-f41.google.com with SMTP id 586e51a60fabf-4040996405eso3565043fac.2 for ; Tue, 20 Jan 2026 08:24:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768926249; x=1769531049; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=BBdNkb22LXPO27vypR+xRQjGktOBTrzdp6bLqF4/Fms=; b=VJOwsC7hVwk9spDdiKeDVtMItZwQI0JEnVBxh5VL7QBEoM4xpmEZ5obfZZaICTY8k6 DC8hV9CT/RWNh606R/f8MZgtfDQBTIkdnRFvc007/G6l9PMYVcnPUH6D8Lpouv87DXWi 9veRsBK6JpSCDEoEruiR/Cud8fiiwEr/jCLXLyNehcQ14g2P4UIUAAvtzQ3+K0BiwBhP x40sJXm7ItFsv421XrOezlpt6tdKOZQfkGQ0lBzeoHVPDMaiwrJRFGqfEm4MtwwHc+hf 3yHonfnKUXh/scZ11R6KVLUCVOVNrlpZ8O+mQiteVnPbH6Q5adYgYYRbg0TmmK4+GnNM Pd5Q== X-Forwarded-Encrypted: i=1; AJvYcCUhYPZ4nkLFiHGzzyiiunj+ZZ0Vm3iDdwDNzOmaq603FbibOiZXKyGuCRPkZ4HgiLZjroxzWYvuZujagQc=@vger.kernel.org X-Gm-Message-State: AOJu0YzhpBkoCekOn+FtAnPHd28/mkyvot7yKcatDd2a7w8L818UjAm2 EXFe89DONlI7EX3dWskmKzJPMayBK8vp81WLZsbNl9nRgyHgZ/xJCZsY X-Gm-Gg: AY/fxX7mD6E+OnOsJwVzbTpZ+qgwkiUGXkJBf7lH/zgWVM3mDqpShZ2v9vYYwN/Xwwr nar9nH2EaeGKMzewhJmE633udBigILBWjR8DmRw+RBNEqJQzfcb/61T5pVenJloV2gryuvKKyVN xOZgXc8dP+cmLl5MZajNETNDJyYfBGjQaLuQd641m2guxFQ8FxuJewrPfkcR6O80nAYTtZokYXf 3S/wVo9feXTuH4mdZ0stf5PaTKh1qq+B7TLv7QcyV5lEkmmEP6IzdOerW0U3ZE8bz8x88Qs5Lt+ UCN5/frfmkHdHqYrtqJhGhghatjgEvAvYtG7IfGDlK8G0I2Ulgqshpjeh0Wwv6IjwPlat8UndfN p3+uAzhRFVotEQpxuoCCEkNOo/tB1POag1rru7NmA6M4YLDrjQNJ64Fps0xO0Ix6JNhjQJ76vnb sg9Q== X-Received: by 2002:a05:6820:190f:b0:659:9a49:8ecb with SMTP id 006d021491bc7-662b00f30d6mr818903eaf.79.1768926249573; Tue, 20 Jan 2026 08:24:09 -0800 (PST) Received: from localhost ([2a03:2880:10ff:48::]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-662b6c3ec82sm46001eaf.17.2026.01.20.08.24.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 08:24:08 -0800 (PST) From: Breno Leitao Date: Tue, 20 Jan 2026 08:23:50 -0800 Subject: [PATCH net-next v2 4/5] netconsole: Use printk context for CPU and task information Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260120-nbcon-v2-4-b61f960587a8@debian.org> References: <20260120-nbcon-v2-0-b61f960587a8@debian.org> In-Reply-To: <20260120-nbcon-v2-0-b61f960587a8@debian.org> To: Breno Leitao , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , pmladek@suse.com, john.ogness@linutronix.de Cc: Greg Kroah-Hartman , Steven Rostedt , Sergey Senozhatsky , Andrew Morton , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, asantostc@gmail.com, efault@gmx.de, gustavold@gmail.com, calvin@wbinvd.org, jv@jvosburgh.net, mpdesouza@suse.com, kernel-team@meta.com X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=openpgp-sha256; l=4839; i=leitao@debian.org; h=from:subject:message-id; bh=C3+2SHjtQfzMU1QwJyHpzEXry6g/X6KazovqMtfAam8=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBpb6wiK2lNijph8Ob3JlC52xe9UowZSXsPao1ib h7cYIWiJ7mJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaW+sIgAKCRA1o5Of/Hh3 bTsWD/4sH6rFls+ZfRfP3Z7EbKP8D3TPqBiwU/jlr0DDVtJgFiAtULq7QLF0GVYvRO2Dy78xcUs bAgoPy8NQEJKb5mgVcE9G9Nw3P9fxB1jgL93gdxHiXhDUvoLOX/dWLPwklpI1XbkCQTpFUJfqXO zDvOOHu6WO4zoVmC+uPVa8WbhrSUfLcEoOhmJywey7VKTGbpkY3rJA+NiMRJMRl/NYQt/bsX1bj O6RtPjfMQMX4083/UoZn9I8h/dSU2luo0NQ5IsW+YiLtUe+A3DhQUnGH15aOmpLBrSo6C0mExyX KzmTb/MrRcM/lNB5auo1OaL4lpud9szjM4ZTj3YYMo0qo+ebfhXEPiyVTlSqdXrcDb5nPmHJhBf cXXBH0oCjcYRJpc/R7WQG85McQslPkeiUDDEBEc6kScqq/SERcXHcZryZ4pzV+aJ86ZGk1lwOhE p/wigXUOlk1WxlH3yRB/4aiKXb38FlEOaFnB2trlPrHd6Ipl05zCcpr0PyR0hLyl30VXOniSGbz HRHCS9m74iJRh6pMSTvNZXdumt6VLIeid413W+IH+pRcrAvktnEP4x0nGRTOZ2E0yjRkTXXTi+C yyliC00jkjaMCt+AHZwsuFtZoZdaN9QzwKJSj1DAbvknbxmxYYcQCf7mvKEi6PuNoyk3jo7Huk6 GC40G8U2R/TyuMw== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D Use the CPU and task name captured at printk() time from nbcon_write_context instead of querying the current execution context. This provides accurate information about where the message originated, rather than where netconsole happens to be running. For CPU, use wctxt->msg_cpu instead of raw_smp_processor_id(). For taskname, use wctxt->msg_comm directly which contains the task name captured at printk time. This change ensures netconsole outputs reflect the actual context that generated the log message, which is especially important when the console driver runs asynchronously in a dedicated thread. Signed-off-by: Breno Leitao --- drivers/net/netconsole.c | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index c5d7e97fe2a78..d89ff01bc9658 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -1357,18 +1357,20 @@ static void populate_configfs_item(struct netconsol= e_target *nt, init_target_config_group(nt, target_name); } =20 -static int sysdata_append_cpu_nr(struct netconsole_target *nt, int offset) +static int sysdata_append_cpu_nr(struct netconsole_target *nt, int offset, + struct nbcon_write_context *wctxt) { return scnprintf(&nt->sysdata[offset], MAX_EXTRADATA_ENTRY_LEN, " cpu=3D%u\n", - raw_smp_processor_id()); + wctxt->cpu); } =20 -static int sysdata_append_taskname(struct netconsole_target *nt, int offse= t) +static int sysdata_append_taskname(struct netconsole_target *nt, int offse= t, + struct nbcon_write_context *wctxt) { return scnprintf(&nt->sysdata[offset], MAX_EXTRADATA_ENTRY_LEN, " taskname=3D%s\n", - current->comm); + wctxt->comm); } =20 static int sysdata_append_release(struct netconsole_target *nt, int offset) @@ -1389,8 +1391,10 @@ static int sysdata_append_msgid(struct netconsole_ta= rget *nt, int offset) /* * prepare_sysdata - append sysdata in runtime * @nt: target to send message to + * @wctxt: nbcon write context containing message metadata */ -static int prepare_sysdata(struct netconsole_target *nt) +static int prepare_sysdata(struct netconsole_target *nt, + struct nbcon_write_context *wctxt) { int sysdata_len =3D 0; =20 @@ -1398,9 +1402,9 @@ static int prepare_sysdata(struct netconsole_target *= nt) goto out; =20 if (nt->sysdata_fields & SYSDATA_CPU_NR) - sysdata_len +=3D sysdata_append_cpu_nr(nt, sysdata_len); + sysdata_len +=3D sysdata_append_cpu_nr(nt, sysdata_len, wctxt); if (nt->sysdata_fields & SYSDATA_TASKNAME) - sysdata_len +=3D sysdata_append_taskname(nt, sysdata_len); + sysdata_len +=3D sysdata_append_taskname(nt, sysdata_len, wctxt); if (nt->sysdata_fields & SYSDATA_RELEASE) sysdata_len +=3D sysdata_append_release(nt, sysdata_len); if (nt->sysdata_fields & SYSDATA_MSGID) @@ -1681,31 +1685,31 @@ static void send_msg_fragmented(struct netconsole_t= arget *nt, /** * send_ext_msg_udp - send extended log message to target * @nt: target to send message to - * @msg: extended log message to send - * @msg_len: length of message + * @wctxt: nbcon write context containing message and metadata * - * Transfer extended log @msg to @nt. If @msg is longer than + * Transfer extended log message to @nt. If message is longer than * MAX_PRINT_CHUNK, it'll be split and transmitted in multiple chunks with * ncfrag header field added to identify them. */ -static void send_ext_msg_udp(struct netconsole_target *nt, const char *msg, - int msg_len) +static void send_ext_msg_udp(struct netconsole_target *nt, + struct nbcon_write_context *wctxt) { int userdata_len =3D 0; int release_len =3D 0; int sysdata_len =3D 0; =20 #ifdef CONFIG_NETCONSOLE_DYNAMIC - sysdata_len =3D prepare_sysdata(nt); + sysdata_len =3D prepare_sysdata(nt, wctxt); userdata_len =3D nt->userdata_length; #endif if (nt->release) release_len =3D strlen(init_utsname()->release) + 1; =20 - if (msg_len + release_len + sysdata_len + userdata_len <=3D MAX_PRINT_CHU= NK) - return send_msg_no_fragmentation(nt, msg, msg_len, release_len); + if (wctxt->len + release_len + sysdata_len + userdata_len <=3D MAX_PRINT_= CHUNK) + return send_msg_no_fragmentation(nt, wctxt->outbuf, + wctxt->len, release_len); =20 - return send_msg_fragmented(nt, msg, msg_len, release_len, + return send_msg_fragmented(nt, wctxt->outbuf, wctxt->len, release_len, sysdata_len); } =20 @@ -1750,7 +1754,7 @@ static void netconsole_write(struct nbcon_write_conte= xt *wctxt, bool extended) return; =20 if (extended) - send_ext_msg_udp(nt, wctxt->outbuf, wctxt->len); + send_ext_msg_udp(nt, wctxt); else send_msg_udp(nt, wctxt->outbuf, wctxt->len); =20 --=20 2.47.3