]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
crypto: inside-secure - do not use memset on MMIO
authorAntoine Tenart <antoine.tenart@bootlin.com>
Thu, 17 May 2018 13:22:14 +0000 (15:22 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sat, 26 May 2018 15:58:44 +0000 (23:58 +0800)
This patch fixes the Inside Secure driver which uses a memtset() call to
set an MMIO area from the cryptographic engine to 0. This is wrong as
memset() isn't guaranteed to work on MMIO for many reasons. This led to
kernel paging request panics in certain cases. Use memset_io() instead.

Fixes: 1b44c5a60c13 ("crypto: inside-secure - add SafeXcel EIP197 crypto engine driver")
Reported-by: Ofer Heifetz <oferh@marvell.com>
Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/inside-secure/safexcel.c

index d4a81be0d7d2e9cd5e088b2c5801afb6f963055d..b6be6202532508897c2a18b1ae831441fde17b66 100644 (file)
@@ -152,8 +152,8 @@ static int eip197_load_firmwares(struct safexcel_crypto_priv *priv)
               EIP197_PE_ICE_SCRATCH_CTRL_CHANGE_ACCESS;
        writel(val, EIP197_PE(priv) + EIP197_PE_ICE_SCRATCH_CTRL);
 
-       memset(EIP197_PE(priv) + EIP197_PE_ICE_SCRATCH_RAM, 0,
-              EIP197_NUM_OF_SCRATCH_BLOCKS * sizeof(u32));
+       memset_io(EIP197_PE(priv) + EIP197_PE_ICE_SCRATCH_RAM, 0,
+                 EIP197_NUM_OF_SCRATCH_BLOCKS * sizeof(u32));
 
        eip197_write_firmware(priv, fw[FW_IFPP], EIP197_PE_ICE_FPP_CTRL,
                              EIP197_PE_ICE_RAM_CTRL_FPP_PROG_EN);