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 [PATCH] cpumask: Preserve short reads in cpumap printing helpers 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.