From 04f329556e30a089126b96e2c8171f3f65483d6d Mon Sep 17 00:00:00 2001 From: Franck LENORMAND Date: Mon, 5 Feb 2018 10:54:56 +0100 Subject: [PATCH] MLK-17253-2: crypto: caam: Use correct memory function for Secure Memory The Secure Memory is a hardware memory whose address was retrieved using of_iomap, hence the memory manipulation shall use the set of functions: memset_io/memcpy_fromio/memcpy_toio in order to works correctly. Not using these functions can result in kernel panic. Signed-off-by: Franck LENORMAND --- drivers/crypto/caam/sm_store.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/caam/sm_store.c b/drivers/crypto/caam/sm_store.c index ff7b1bb19ce1..ed8d9fe83f66 100644 --- a/drivers/crypto/caam/sm_store.c +++ b/drivers/crypto/caam/sm_store.c @@ -502,7 +502,7 @@ int slot_dealloc(struct device *dev, u32 unit, u32 slot) if (ksdata->slot[slot].allocated == 1) { /* Forcibly overwrite the data from the keystore */ - memset(ksdata->base_address + slot * smpriv->slot_size, 0, + memset_io(ksdata->base_address + slot * smpriv->slot_size, 0, smpriv->slot_size); ksdata->slot[slot].allocated = 0; @@ -799,8 +799,7 @@ int sm_keystore_slot_load(struct device *dev, u32 unit, u32 slot, slot_location = smpriv->slot_get_address(dev, unit, slot); - for (i = 0; i < key_length; i++) - slot_location[i] = key_data[i]; + memcpy_toio(slot_location, key_data, key_length); retval = 0; @@ -828,7 +827,7 @@ int sm_keystore_slot_read(struct device *dev, u32 unit, u32 slot, goto out; } - memcpy(key_data, slot_addr, key_length); + memcpy_fromio(key_data, slot_addr, key_length); retval = 0; out: -- 2.17.1