[Skiboot] [PATCH 3/5] xscom: Harden indirect writes

Michael Neuling mikey at neuling.org
Wed Mar 22 13:59:43 AEDT 2017


Indirect scoms can only set certain bits of data.  Ensure only these
are set when trying to write.

Signed-off-by: Michael Neuling <mikey at neuling.org>
---
 hw/xscom.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/hw/xscom.c b/hw/xscom.c
index 2f55f12855..1add658776 100644
--- a/hw/xscom.c
+++ b/hw/xscom.c
@@ -369,6 +369,10 @@ static int xscom_indirect_write(uint32_t gcid, uint64_t pcb_addr, uint64_t val)
 	if (proc_gen < proc_gen_p8)
 		return OPAL_UNSUPPORTED;
 
+	/* Only 16 bit data with indirect */
+	if (val & ~(XSCOM_ADDR_IND_ADDR))
+		return OPAL_PARAMETER;
+
 	/* Write indirect address & data */
 	addr = pcb_addr & 0x7fffffff;
 	data = pcb_addr & XSCOM_ADDR_IND_ADDR;
-- 
2.9.3



More information about the Skiboot mailing list