Commit 12d712dc authored by Shiqi Liu's avatar Shiqi Liu Committed by Will Deacon
Browse files

arm64/sysreg: Update PIE permission encodings



Fix left shift overflow issue when the parameter idx is greater than or
equal to 8 in the calculation of perm in PIRx_ELx_PERM macro.

Fix this by modifying the encoding to use a long integer type.

Signed-off-by: default avatarShiqi Liu <shiqiliu@hust.edu.cn>
Acked-by: default avatarMarc Zyngier <maz@kernel.org>
Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20240421063328.29710-1-shiqiliu@hust.edu.cn


Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent f4d9d9dc
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -1036,18 +1036,18 @@
 * Permission Indirection Extension (PIE) permission encodings.
 * Encodings with the _O suffix, have overlays applied (Permission Overlay Extension).
 */
#define PIE_NONE_O	0x0
#define PIE_R_O		0x1
#define PIE_X_O		0x2
#define PIE_RX_O	0x3
#define PIE_RW_O	0x5
#define PIE_RWnX_O	0x6
#define PIE_RWX_O	0x7
#define PIE_R		0x8
#define PIE_GCS		0x9
#define PIE_RX		0xa
#define PIE_RW		0xc
#define PIE_RWX		0xe
#define PIE_NONE_O	UL(0x0)
#define PIE_R_O		UL(0x1)
#define PIE_X_O		UL(0x2)
#define PIE_RX_O	UL(0x3)
#define PIE_RW_O	UL(0x5)
#define PIE_RWnX_O	UL(0x6)
#define PIE_RWX_O	UL(0x7)
#define PIE_R		UL(0x8)
#define PIE_GCS		UL(0x9)
#define PIE_RX		UL(0xa)
#define PIE_RW		UL(0xc)
#define PIE_RWX		UL(0xe)

#define PIRx_ELx_PERM(idx, perm)	((perm) << ((idx) * 4))

+12 −12
Original line number Diff line number Diff line
@@ -701,18 +701,18 @@
 * Permission Indirection Extension (PIE) permission encodings.
 * Encodings with the _O suffix, have overlays applied (Permission Overlay Extension).
 */
#define PIE_NONE_O	0x0
#define PIE_R_O		0x1
#define PIE_X_O		0x2
#define PIE_RX_O	0x3
#define PIE_RW_O	0x5
#define PIE_RWnX_O	0x6
#define PIE_RWX_O	0x7
#define PIE_R		0x8
#define PIE_GCS		0x9
#define PIE_RX		0xa
#define PIE_RW		0xc
#define PIE_RWX		0xe
#define PIE_NONE_O	UL(0x0)
#define PIE_R_O		UL(0x1)
#define PIE_X_O		UL(0x2)
#define PIE_RX_O	UL(0x3)
#define PIE_RW_O	UL(0x5)
#define PIE_RWnX_O	UL(0x6)
#define PIE_RWX_O	UL(0x7)
#define PIE_R		UL(0x8)
#define PIE_GCS		UL(0x9)
#define PIE_RX		UL(0xa)
#define PIE_RW		UL(0xc)
#define PIE_RWX		UL(0xe)

#define PIRx_ELx_PERM(idx, perm)	((perm) << ((idx) * 4))