crypto: ccp - Fix SNP panic notifier unregistration
authorAshish Kalra <ashish.kalra@amd.com>
Mon, 16 Jun 2025 21:50:27 +0000 (21:50 +0000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 23 Jun 2025 09:00:27 +0000 (17:00 +0800)
commitab8b9fd39c45b7760093528cbef93e7353359d82
treecb3d078be824e98102a6a43d075c3228cb6cb15f
parentf5ad93ffb54119a8dc5e18f070624d4ead586969
crypto: ccp - Fix SNP panic notifier unregistration

Panic notifiers are invoked with RCU read lock held and when the
SNP panic notifier tries to unregister itself from the panic
notifier callback itself it causes a deadlock as notifier
unregistration does RCU synchronization.

Code flow for SNP panic notifier:
snp_shutdown_on_panic() ->
__sev_firmware_shutdown() ->
__sev_snp_shutdown_locked() ->
atomic_notifier_chain_unregister(.., &snp_panic_notifier)

Fix SNP panic notifier to unregister itself during SNP shutdown
only if panic is not in progress.

Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Cc: stable@vger.kernel.org
Fixes: 19860c3274fb ("crypto: ccp - Register SNP panic notifier only if SNP is enabled")
Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/ccp/sev-dev.c