summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWill Deacon <will@kernel.org>2019-11-04 15:58:15 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-12-17 20:08:33 +0100
commit496c44d56744db7e58e985f27d511a0045d31552 (patch)
tree6d718db080ca082874e86158b93c09748cc67afc
parentea46b9e9aa340496aec70ff401b4e922df54f244 (diff)
downloadlinux-stable-496c44d56744db7e58e985f27d511a0045d31552.tar.gz
linux-stable-496c44d56744db7e58e985f27d511a0045d31552.tar.bz2
linux-stable-496c44d56744db7e58e985f27d511a0045d31552.zip
firmware: qcom: scm: Ensure 'a0' status code is treated as signed
commit ff34f3cce278a0982a7b66b1afaed6295141b1fc upstream. The 'a0' member of 'struct arm_smccc_res' is declared as 'unsigned long', however the Qualcomm SCM firmware interface driver expects to receive negative error codes via this field, so ensure that it's cast to 'long' before comparing to see if it is less than 0. Cc: <stable@vger.kernel.org> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Will Deacon <will@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/firmware/qcom_scm-64.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/firmware/qcom_scm-64.c b/drivers/firmware/qcom_scm-64.c
index 91d5ad7cf58b..25e0f60c759a 100644
--- a/drivers/firmware/qcom_scm-64.c
+++ b/drivers/firmware/qcom_scm-64.c
@@ -150,7 +150,7 @@ static int qcom_scm_call(struct device *dev, u32 svc_id, u32 cmd_id,
kfree(args_virt);
}
- if (res->a0 < 0)
+ if ((long)res->a0 < 0)
return qcom_scm_remap_error(res->a0);
return 0;