]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
hwrng: st - keep clock enabled while hwrng is registered
authorMartin Kaiser <martin@kaiser.cx>
Fri, 16 Jun 2023 08:58:13 +0000 (09:58 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jul 2023 06:37:19 +0000 (08:37 +0200)
commitbac502cd472a0567c4d8548a5e91cd960b4bb86d
treec8ac1dd571141629500b71d93116eef8f58d335e
parent071560202a52fe7647c677d52792f4c690f126dc
hwrng: st - keep clock enabled while hwrng is registered

[ Upstream commit 501e197a02d4aef157f53ba3a0b9049c3e52fedc ]

The st-rng driver uses devres to register itself with the hwrng core,
the driver will be unregistered from hwrng when its device goes out of
scope. This happens after the driver's remove function is called.

However, st-rng's clock is disabled in the remove function. There's a
short timeframe where st-rng is still registered with the hwrng core
although its clock is disabled. I suppose the clock must be active to
access the hardware and serve requests from the hwrng core.

Switch to devm_clk_get_enabled and let devres disable the clock and
unregister the hwrng. This avoids the race condition.

Fixes: 3e75241be808 ("hwrng: drivers - Use device-managed registration API")
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/char/hw_random/st-rng.c