From: Yury Norov <ynorov@nvidia.com>
To: Hungyu Lin <dennylin0707@gmail.com>
Cc: yury.norov@gmail.com, linux@rasmusvillemoes.dk,
tklauser@distanz.ch, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] cpumask: Preserve short reads in cpumap printing helpers
Date: Wed, 28 Oct 2026 11:25:52 -0400 [thread overview]
Message-ID: <auIUAEuUC65rgHot@yury> (raw)
In-Reply-To: <20261020170126.15428-1-dennylin0707@gmail.com>
On Tue, Oct 20, 2026 at 05:01:26PM +0000, Hungyu Lin wrote:
> The cpumap printing helpers unconditionally subtract one from the bitmap
> helper's return value to exclude a terminating NUL. A partial read may
> not reach that NUL, so this also subtracts a data byte from the returned
> length. A one-byte read therefore returns zero even when data remains.
> For example, this command prints nothing despite the file being nonempty:
>
> head -c 1 /sys/devices/system/cpu/cpu0/topology/core_cpus_list
>
> Subtract one only when the copied range actually ends in NUL. This
> preserves short reads, EOF and negative error returns while continuing
> to exclude the terminator from complete sysfs reads.
>
> Fixes: c86a2d9058c5 ("cpumask: Omit terminating null byte in cpumap_print_{list,bitmask}_to_buf")
> Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
Added in bitmap-for-next. Thanks!
> ---
> include/linux/cpumask.h | 20 ++++++++++++++++----
> 1 file changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
> index 4c8bb6953107..2caeae982faf 100644
> --- a/include/linux/cpumask.h
> +++ b/include/linux/cpumask.h
> @@ -1334,8 +1334,14 @@ static __always_inline
> ssize_t cpumap_print_bitmask_to_buf(char *buf, const struct cpumask *mask,
> loff_t off, size_t count)
> {
> - return bitmap_print_bitmask_to_buf(buf, cpumask_bits(mask),
> - nr_cpu_ids, off, count) - 1;
> + ssize_t n;
> +
> + n = bitmap_print_bitmask_to_buf(buf, cpumask_bits(mask),
> + nr_cpu_ids, off, count);
> + if (n > 0 && buf[n - 1] == '\0')
> + n--;
> +
> + return n;
> }
>
> /**
> @@ -1356,8 +1362,14 @@ static __always_inline
> ssize_t cpumap_print_list_to_buf(char *buf, const struct cpumask *mask,
> loff_t off, size_t count)
> {
> - return bitmap_print_list_to_buf(buf, cpumask_bits(mask),
> - nr_cpu_ids, off, count) - 1;
> + ssize_t n;
> +
> + n = bitmap_print_list_to_buf(buf, cpumask_bits(mask),
> + nr_cpu_ids, off, count);
> + if (n > 0 && buf[n - 1] == '\0')
> + n--;
> +
> + return n;
> }
>
> #if NR_CPUS <= BITS_PER_LONG
>
> base-commit: a73b4d1fa7d334a5f7de5bb0a14726530f66196e
prev parent reply other threads:[~2026-10-28 15:25 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-20 17:01 Hungyu Lin
2026-10-21 14:42 ` Tobias Klauser
2026-10-28 15:25 ` Yury Norov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=auIUAEuUC65rgHot@yury \
--to=ynorov@nvidia.com \
--cc=dennylin0707@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=tklauser@distanz.ch \
--cc=yury.norov@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®