MLK-20893: imx: in_le32 out_le32 preprocessor casting issue with addresses involving math
The sec_in32 preprocessor is defined as follows in include/fsl_sec.h file:
When address "a" is calculated using math for ex: addition of base address and an offset, then casting is applied only to the first address which in this example is base address.
caam_ccbvid_reg = sec_in32(CONFIG_SYS_FSL_SEC_ADDR + CAAM_CCBVID_OFFSET)
resolves to:
caam_ccbvid_reg = in_le32((ulong *)(ulong)CONFIG_SYS_FSL_SEC_ADDR + CAAM_CCBVID_OFFSET)
instead it should resolve to:
caam_ccbvid_reg = in_le32((ulong *)(ulong)(CONFIG_SYS_FSL_SEC_ADDR + CAAM_CCBVID_OFFSET))
Thus add parenthesis around the address "a" so that however the address is calculated, the casting is applied to the final calculated address.
Bug introduced by commit 79e90af14a ("MLK-18044-2: crypto: caam: Fix build warnings pointer casting").
Signed-off-by: Utkarsh Gupta <utkarsh.gupta@nxp.com>
Reviewed-by: Horia Geanta <horia.geanta@nxp.com>
Reviewed-by: Ye Li <ye.li@nxp.com>
(cherry picked from commit 5d10d1cab052f8af4fd00640e09642aa0a596922)
This commit is contained in:
parent
15ecd669ac
commit
2330001afc
|
|
@ -14,8 +14,8 @@
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_FSL_SEC_LE
|
#ifdef CONFIG_SYS_FSL_SEC_LE
|
||||||
#define sec_in32(a) in_le32((ulong *)(ulong)a)
|
#define sec_in32(a) in_le32((ulong *)(ulong)(a))
|
||||||
#define sec_out32(a, v) out_le32((ulong *)(ulong)a, v)
|
#define sec_out32(a, v) out_le32((ulong *)(ulong)(a), v)
|
||||||
#define sec_in16(a) in_le16(a)
|
#define sec_in16(a) in_le16(a)
|
||||||
#define sec_clrbits32 clrbits_le32
|
#define sec_clrbits32 clrbits_le32
|
||||||
#define sec_setbits32 setbits_le32
|
#define sec_setbits32 setbits_le32
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue