lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 15 Feb 2022 15:44:00 +0530 From: Anup Patel <anup@...infault.org> To: Atish Patra <atishp@...osinc.com> Cc: "linux-kernel@...r.kernel.org List" <linux-kernel@...r.kernel.org>, Tsukasa OI <research_trasio@....a4lg.com>, Heiko Stuebner <heiko@...ech.de>, Albert Ou <aou@...s.berkeley.edu>, Atish Patra <atishp@...shpatra.org>, Damien Le Moal <damien.lemoal@....com>, DTML <devicetree@...r.kernel.org>, Jisheng Zhang <jszhang@...nel.org>, Krzysztof Kozlowski <krzysztof.kozlowski@...onical.com>, linux-riscv <linux-riscv@...ts.infradead.org>, Palmer Dabbelt <palmer@...belt.com>, Paul Walmsley <paul.walmsley@...ive.com>, Rob Herring <robh+dt@...nel.org> Subject: Re: [PATCH v3 3/6] RISC-V: Extract multi-letter extension names from "riscv, isa" On Tue, Feb 15, 2022 at 2:32 PM Atish Patra <atishp@...osinc.com> wrote: > > From: Tsukasa OI <research_trasio@....a4lg.com> > > Currently, there is no usage for version numbers in extensions as > any ratified non base ISA extension will always at v1.0. > > Extract the extension names in place for future parsing. > > Signed-off-by: Tsukasa OI <research_trasio@....a4lg.com> > [Improved commit text and comments] > Signed-off-by: Atish Patra <atishp@...osinc.com> > Tested-by: Heiko Stuebner <heiko@...ech.de> > --- > arch/riscv/kernel/cpufeature.c | 38 ++++++++++++++++++++++++++-------- > 1 file changed, 29 insertions(+), 9 deletions(-) > > diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c > index 9d5448542226..cd9eb34f8d11 100644 > --- a/arch/riscv/kernel/cpufeature.c > +++ b/arch/riscv/kernel/cpufeature.c > @@ -119,9 +119,28 @@ void __init riscv_fill_hwcap(void) > ext_long = true; > /* Multi-letter extension must be delimited */ > for (; *isa && *isa != '_'; ++isa) > - if (!islower(*isa) && !isdigit(*isa)) > + if (unlikely(!islower(*isa) > + && !isdigit(*isa))) > ext_err = true; > - /* ... but must be ignored. */ > + /* Parse backwards */ > + ext_end = isa; > + if (unlikely(ext_err)) > + break; > + if (!isdigit(ext_end[-1])) > + break; > + /* Skip the minor version */ > + while (isdigit(*--ext_end)) > + ; > + if (ext_end[0] != 'p' > + || !isdigit(ext_end[-1])) { > + /* Advance it to offset the pre-decrement */ > + ++ext_end; > + break; > + } > + /* Skip the major version */ > + while (isdigit(*--ext_end)) > + ; > + ++ext_end; > break; > default: > if (unlikely(!islower(*ext))) { > @@ -131,6 +150,7 @@ void __init riscv_fill_hwcap(void) > /* Find next extension */ > if (!isdigit(*isa)) > break; > + /* Skip the minor version */ This comment should be moved to PATCH2 > while (isdigit(*++isa)) > ; > if (*isa != 'p') > @@ -139,20 +159,20 @@ void __init riscv_fill_hwcap(void) > --isa; > break; > } > + /* Skip the major version */ Same applies to this comment as well. > while (isdigit(*++isa)) > ; > break; > } > if (*isa != '_') > --isa; > - /* > - * TODO: Full version-aware handling including > - * multi-letter extensions will be added in-future. > - */ > - if (ext_err || ext_long) > + > + if (unlikely(ext_err)) > continue; > - this_hwcap |= isa2hwcap[(unsigned char)(*ext)]; > - this_isa |= (1UL << (*ext - 'a')); > + if (!ext_long) { > + this_hwcap |= isa2hwcap[(unsigned char)(*ext)]; > + this_isa |= (1UL << (*ext - 'a')); > + } > } > > /* > -- > 2.30.2 > Otherwise it looks good to me. Reviewed-by: Anup Patel <anup@...infault.org> Regards, Anup
Powered by blists - more mailing lists