lkml.org 
[lkml]   [2022]   [Aug]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 183/545] crypto: ccp - During shutdown, check SEV data pointer before using
    Date
    From: Tom Lendacky <thomas.lendacky@amd.com>

    [ Upstream commit 1b05ece0c931536c0a38a9385e243a7962e933f6 ]

    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>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/crypto/ccp/sev-dev.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/crypto/ccp/sev-dev.c b/drivers/crypto/ccp/sev-dev.c
    index 57b57d4db500..ed39a22e1b2b 100644
    --- a/drivers/crypto/ccp/sev-dev.c
    +++ b/drivers/crypto/ccp/sev-dev.c
    @@ -278,7 +278,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);
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-19 18:12    [W:2.675 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site