netconsole: fix appending sysdata when sysdata_fields == SYSDATA_RELEASE
authorGustavo Luiz Duarte <gustavold@gmail.com>
Mon, 9 Jun 2025 18:24:20 +0000 (11:24 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 10 Jun 2025 22:52:08 +0000 (15:52 -0700)
Before appending sysdata, prepare_extradata() checks if any feature is
enabled in sysdata_fields (and exits early if none is enabled).

When SYSDATA_RELEASE was introduced, we missed adding it to the list of
features being checked against sysdata_fields in prepare_extradata().
The result was that, if only SYSDATA_RELEASE is enabled in
sysdata_fields, we incorreclty exit early and fail to append the
release.

Instead of checking specific bits in sysdata_fields, check if
sysdata_fields has ALL bit zeroed and exit early if true. This fixes
case when only SYSDATA_RELEASE enabled and makes the code more general /
less error prone in future feature implementation.

Signed-off-by: Gustavo Luiz Duarte <gustavold@gmail.com>
Reviewed-by: Breno Leitao <leitao@debian.org>
Fixes: cfcc9239e78a ("netconsole: append release to sysdata")
Link: https://patch.msgid.link/20250609-netconsole-fix-v1-1-17543611ae31@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/netconsole.c

index 4289ccd3e41bff109aa3f8ff352dcebba8a7ebee..176935a8645ff137dd8109dc3e88ac47d5d7c748 100644 (file)
@@ -1252,7 +1252,6 @@ static int sysdata_append_release(struct netconsole_target *nt, int offset)
  */
 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
@@ -1260,7 +1259,7 @@ static int prepare_extradata(struct netconsole_target *nt)
         */
        extradata_len = nt->userdata_length;
 
-       if (!(nt->sysdata_fields & fields))
+       if (!nt->sysdata_fields)
                goto out;
 
        if (nt->sysdata_fields & SYSDATA_CPU_NR)