Message ID | 7be057567582b480fd10a8d3d8d6574af4a73f2a.1655393178.git.thomas.lendacky@amd.com |
---|---|
State | Accepted |
Commit | 1b05ece0c931536c0a38a9385e243a7962e933f6 |
Headers | show |
Series | crypto: ccp - During shutdown, check SEV data pointer before using | expand |
On Thu, Jun 16, 2022 at 10:26:18AM -0500, Tom Lendacky wrote: > On shutdown, each CCP device instance performs shutdown processing. > However, __sev_platform_shutdown_locked() uses the controlling psp > structure to obtain the pointer to the sev_device structure. However, > during driver initialization, it is possible that an error can be received > from the firmware that results in the sev_data pointer being cleared from > the controlling psp structure. The __sev_platform_shutdown_locked() > function does not check for this situation and will segfault. > > While not common, this scenario should be accounted for. Add a check for a > NULL sev_device structure before attempting to use it. > > Fixes: 5441a07a127f ("crypto: ccp - shutdown SEV firmware on kexec") > Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> > --- > drivers/crypto/ccp/sev-dev.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Patch applied. Thanks.
diff --git a/drivers/crypto/ccp/sev-dev.c b/drivers/crypto/ccp/sev-dev.c index 799b476fc3e8..7baf7659c7c5 100644 --- a/drivers/crypto/ccp/sev-dev.c +++ b/drivers/crypto/ccp/sev-dev.c @@ -503,7 +503,7 @@ static int __sev_platform_shutdown_locked(int *error) struct sev_device *sev = psp_master->sev_data; int ret; - if (sev->state == SEV_STATE_UNINIT) + if (!sev || sev->state == SEV_STATE_UNINIT) return 0; ret = __sev_do_cmd_locked(SEV_CMD_SHUTDOWN, NULL, error);
On shutdown, each CCP device instance performs shutdown processing. However, __sev_platform_shutdown_locked() uses the controlling psp structure to obtain the pointer to the sev_device structure. However, during driver initialization, it is possible that an error can be received from the firmware that results in the sev_data pointer being cleared from the controlling psp structure. The __sev_platform_shutdown_locked() function does not check for this situation and will segfault. While not common, this scenario should be accounted for. Add a check for a NULL sev_device structure before attempting to use it. Fixes: 5441a07a127f ("crypto: ccp - shutdown SEV firmware on kexec") Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> --- drivers/crypto/ccp/sev-dev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)