mirror of
https://github.com/torvalds/linux.git
synced 2026-09-25 09:41:03 +02:00
crypto: ccp - Fix possible deadlock in SEV init failure path
__sev_platform_init_handle_init_ex_path() calls rmp_mark_pages_firmware() with locked=false while the parent function of init_ex_path already acquired the sev_cmd_mutex. In the case of an RMPUPDATE failure for any page after the first, the cleanup path would invoke reclaim pages which would result in a deadlock in sev_do_cmd. Pass locked=true to honor the lock status of the parent function. Fixes:7364a6fbca("crypto: ccp: Handle non-volatile INIT_EX data when SNP is enabled") Reported-by: Chris Mason <clm@meta.com> Assisted-by: Claude:claude-opus-4-6 Fixes:7364a6fbca("crypto: ccp: Handle non-volatile INIT_EX data when SNP is enabled") Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by: Atish Patra <atishp@meta.com> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
e264401ce4
commit
b0e7ec0dab
|
|
@ -1719,7 +1719,7 @@ static int __sev_platform_init_handle_init_ex_path(struct sev_device *sev)
|
|||
unsigned long npages;
|
||||
|
||||
npages = 1UL << get_order(NV_LENGTH);
|
||||
if (rmp_mark_pages_firmware(__pa(sev_init_ex_buffer), npages, false)) {
|
||||
if (rmp_mark_pages_firmware(__pa(sev_init_ex_buffer), npages, true)) {
|
||||
dev_err(sev->dev, "SEV: INIT_EX NV memory page state change failed.\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user