In the if (dev_of_node(dev) && !pdata) path, the "err" may be assigned a
value of 0, so the error return code -EINVAL may be incorrectly set
to 0. To fix set valid return code before calling to goto.
Fixes: 35da60941e44 ("pstore/ram: add Device Tree bindings")
Signed-off-by: Wang Yufen <[email protected]>
---
fs/pstore/ram.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
index fefe3d3..74e4d93 100644
--- a/fs/pstore/ram.c
+++ b/fs/pstore/ram.c
@@ -735,6 +735,7 @@ static int ramoops_probe(struct platform_device *pdev)
/* Make sure we didn't get bogus platform data pointer. */
if (!pdata) {
pr_err("NULL platform data\n");
+ err = -EINVAL;
goto fail_out;
}
@@ -742,6 +743,7 @@ static int ramoops_probe(struct platform_device *pdev)
!pdata->ftrace_size && !pdata->pmsg_size)) {
pr_err("The memory size and the record/console size must be "
"non-zero\n");
+ err = -EINVAL;
goto fail_out;
}
--
1.8.3.1
On Fri, 2 Dec 2022 16:22:54 +0800, Wang Yufen wrote:
> In the if (dev_of_node(dev) && !pdata) path, the "err" may be assigned a
> value of 0, so the error return code -EINVAL may be incorrectly set
> to 0. To fix set valid return code before calling to goto.
>
>
Applied to for-next/pstore, thanks!
[1/1] pstore/ram: Fix error return code in ramoops_probe()
https://git.kernel.org/kees/c/e1fce564900f
--
Kees Cook