Re: [PATCH v3 1/3] riscv: hwprobe: initialize pair->value in hwprobe_one_pair()
Paul Walmsley <[email protected]>
| Newsgroups | org.infradead.lists.linux-riscv |
|---|---|
| Message-ID | <[email protected]> |
Hi Andy,
On Fri, 24 Jul 2026, Andy Chiu wrote:
> The vendor-extension handlers reached from hwprobe_one_pair()
> (hwprobe_isa_vendor_ext_thead_0() and friends) only OR the present bits
> into pair->value via VENDOR_EXTENSION_SUPPORTED() and clear their own
> missing bits; they assume the caller has already zeroed pair->value.
>
> That holds for hwprobe_get_values() (it zeroes each pair) and
> hwprobe_get_cpus() (it re-initializes its scratch pair per key), but not
> for complete_hwprobe_vdso_data(), which reuses a single pair across all
> keys without re-zeroing. A vendor key therefore inherits stale bits from
> the previously probed key, and the wrong value is cached in the vDSO
> all_cpu_hwprobe_values[] and handed to userspace on the fast patih.
>
> Zero pair->value once at the top of hwprobe_one_pair() so every handler
> starts from a clean value regardless of the caller, and drop the now
> redundant zeroing in the *_BLOCK_SIZE cases. hwprobe_isa_ext0() keeps its
> own zeroing because hwprobe_ext0_has() calls it directly, bypassing
> hwprobe_one_pair().
>
> Fixes: a5ea53da65c5 ("riscv: hwprobe: Add thead vendor extension probing")
> Signed-off-by: Andy Chiu <[email protected]>
Thanks, queued for v7.3-rc.
- Paul
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv