crypto: ccp - Validate that platform access mailbox registers are declared
authorMario Limonciello <mario.limonciello@amd.com>
Fri, 19 May 2023 03:24:12 +0000 (22:24 -0500)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 2 Jun 2023 10:21:32 +0000 (18:21 +0800)
Some platforms might support platform access doorbell but not mailbox.
Add an extra guard to ensure this doesn't cause accesses to wrong ranges
if a consumer calls psp_send_platform_access_msg().

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/ccp/platform-access.c

index 939c924fc38321a3eb3bd4f54ea23445804df673..94367bc49e35b869dc5093a918c21f325459fce6 100644 (file)
@@ -67,6 +67,11 @@ int psp_send_platform_access_msg(enum psp_platform_access_msg msg,
                return -ENODEV;
 
        pa_dev = psp->platform_access_data;
+
+       if (!pa_dev->vdata->cmdresp_reg || !pa_dev->vdata->cmdbuff_addr_lo_reg ||
+           !pa_dev->vdata->cmdbuff_addr_hi_reg)
+               return -ENODEV;
+
        cmd = psp->io_regs + pa_dev->vdata->cmdresp_reg;
        lo = psp->io_regs + pa_dev->vdata->cmdbuff_addr_lo_reg;
        hi = psp->io_regs + pa_dev->vdata->cmdbuff_addr_hi_reg;