Re: [PATCH] riscv: lib: Fix address overflow due to large count values in strnlen ZBB path
| Newsgroups | org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi Aurelien, >On 2026-08-19 16:18, [email protected] wrote: >> Hi all, >> >> This patch fixes an issue in the RISC-V ZBB optimized strnlen implementation. >> >> Problem description: When using the ZBB optimized strnlen implementation, passing very large count values (such as SIZE_MAX) can cause address overflow and return incorrect results. >> >> This issue was observed in device-mapper tests: >> >> sh-5.2# dmsetup create testname9 --table "0 8 zero" >> sh-5.2# cat /sys/block/dm-*/dm/name >> testname >> sh-5.2# dmsetup remove testname9 >> >> The overflow in strnlen caused failures in string handling during device-mapper operations. >> >> Patch summary: >> - Explicitly introduce the strnlen_generic label. >> - Simplify the generic implementation loop. > >This part should be in a separate patch, separated from the bug fix, and >if possible with some benchmark. I agree, I will split the generic implementation changes into a separate patch and provide benchmark results to show the performance impact. >> - Add fallback logic in strnlen_zbb to redirect to the generic path when a0 + a1 overflows. >> This ensures correct behavior for large count values and SIZE_MAX cases. > >Is there a way to instead to fix the strnlen_zbb to avoid the fallback? > It is possible to make strnlen_zbb work correctly without fallback, I will reconsider this point: if the performance loss of the non-fallback version turns out to be small, then using the non-fallback code may be acceptable. Regards, Rui _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv