>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