Hi, Stephen Hemminger
On 2024/10/23 23:42, Stephen Hemminger wrote:
> On Wed, 23 Oct 2024 16:28:10 +0800
> Dengdui Huang <[email protected]> wrote:
>
>> The function strerror() is insecure in a multi-thread environment.
>> It is better to use rte_strerror() instead of strerror().
>> In this patchset, only the libs and drivers are modified.
>>
>> chang log:
>> v3->v4 fix ci error
>> v2->v3 drop patch "telemetry: replace strerror" due to compile fail
>> v1-v2 fix ci error
>
> Even rte_strerror is not completely safe. It depends on the calling
> thread being a registered lcore.
As discussed earlier, it is still safe if used from non-DPDK registered
threads[1]:
#define RTE_DEFINE_PER_LCORE(type, name) \
__thread __typeof__(type) per_lcore_##name
[1]:
https://elixir.bootlin.com/dpdk/v23.11-rc3/source/lib/eal/include/rte_per_lcore.h#L37
>
> It would be better to use a coccinelle script to do direct replacement
> with strerror_r().
>
> Also, rte_strerror is not signal safe.
Can we use strerror_r() in the signal processing context and replace it with
rte_strerror() everywhere else?