Message ID | 20211014124349.1429696-2-adrian.fiergolski@fastree3d.com |
---|---|
State | Deferred |
Delegated to: | Tom Rini |
Headers | show |
Series | [v5,1/2] firmware: zynqmp: fix write to an uninitialised pointer in xilinx_pm_request | expand |
On 10/14/21 14:43, Adrian Fiergolski wrote: > This patch fixes xilinx_pm_request to return a valid status from > xilinx_pm_request in EL2. > > Signed-off-by: Adrian Fiergolski <adrian.fiergolski@fastree3d.com> > --- > drivers/firmware/firmware-zynqmp.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/firmware/firmware-zynqmp.c b/drivers/firmware/firmware-zynqmp.c > index 8273437dd9..34ad7fb985 100644 > --- a/drivers/firmware/firmware-zynqmp.c > +++ b/drivers/firmware/firmware-zynqmp.c > @@ -208,7 +208,7 @@ int __maybe_unused xilinx_pm_request(u32 api_id, u32 arg0, u32 arg1, u32 arg2, > ret_payload[4] = (u32)regs.regs[2]; > } > > - ret = (ret_payload) ? ret_payload[0] : 0; > + ret = (int)regs.regs[0]; > } > return ret; > } > I have tested this series and our expectation that regs.regs[0] is return value is not unfortunately correct. mmio_read/write are not aligned to it. And when you try to boot you will see hang without any message. I sent 2 patches as suggestion how we could do it via ipi_req(). Please take a look at it and let me know your opinion. Thanks, Michal
diff --git a/drivers/firmware/firmware-zynqmp.c b/drivers/firmware/firmware-zynqmp.c index 8273437dd9..34ad7fb985 100644 --- a/drivers/firmware/firmware-zynqmp.c +++ b/drivers/firmware/firmware-zynqmp.c @@ -208,7 +208,7 @@ int __maybe_unused xilinx_pm_request(u32 api_id, u32 arg0, u32 arg1, u32 arg2, ret_payload[4] = (u32)regs.regs[2]; } - ret = (ret_payload) ? ret_payload[0] : 0; + ret = (int)regs.regs[0]; } return ret; }
This patch fixes xilinx_pm_request to return a valid status from xilinx_pm_request in EL2. Signed-off-by: Adrian Fiergolski <adrian.fiergolski@fastree3d.com> --- drivers/firmware/firmware-zynqmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)