>On Wed, Dec 16, 2020 at 11:59:06AM +0100, Luca Dariz wrote:
>>
>> @@ -432,12 +433,15 @@ static int hwrng_fillfn(void *unused)  {
>>       long rc;
>>
>> +     complete(&hwrng_started);
>>       while (!kthread_should_stop()) {
>>               struct hwrng *rng;
>>
>>               rng = get_current_rng();
>> -             if (IS_ERR(rng) || !rng)
>> -                     break;
>> +             if (IS_ERR(rng) || !rng) {
>> +                     msleep_interruptible(10);
>> +                     continue;
>
>Please fix this properly with reference counting.

I thought a bit more about it, but I always find a potential race condition 
with kthread_stop() and the hwrng_fill NULL pointer check.
In my opinion the thread termination should be only triggered with 
kthread_stop(), otherwise it might be called with an invalid or NULL hwrng_fill.
Am I missing something?

Thanks
Luca

Reply via email to