Commit 96188b18 authored by Kees Cook's avatar Kees Cook Committed by Greg Kroah-Hartman

pstore/ram: Avoid allocation and leak of platform data

commit 5631e857 upstream.

Yue Hu noticed that when parsing device tree the allocated platform data
was never freed. Since it's not used beyond the function scope, this
switches to using a stack variable instead.
Reported-by: default avatarYue Hu <huyue2@yulong.com>
Fixes: 35da6094 ("pstore/ram: add Device Tree bindings")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 71a41c7d
...@@ -711,18 +711,15 @@ static int ramoops_probe(struct platform_device *pdev) ...@@ -711,18 +711,15 @@ static int ramoops_probe(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct ramoops_platform_data *pdata = dev->platform_data; struct ramoops_platform_data *pdata = dev->platform_data;
struct ramoops_platform_data pdata_local;
struct ramoops_context *cxt = &oops_cxt; struct ramoops_context *cxt = &oops_cxt;
size_t dump_mem_sz; size_t dump_mem_sz;
phys_addr_t paddr; phys_addr_t paddr;
int err = -EINVAL; int err = -EINVAL;
if (dev_of_node(dev) && !pdata) { if (dev_of_node(dev) && !pdata) {
pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); pdata = &pdata_local;
if (!pdata) { memset(pdata, 0, sizeof(*pdata));
pr_err("cannot allocate platform data buffer\n");
err = -ENOMEM;
goto fail_out;
}
err = ramoops_parse_dt(pdev, pdata); err = ramoops_parse_dt(pdev, pdata);
if (err < 0) if (err < 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment