acpi_evaluate_object() allocates memory. Free the buffer allocated
during acpi_nfit_add().

Cc: <[email protected]>
Cc: Vishal Verma <[email protected]>
Reported-by: Xiao Guangrong <[email protected]>
Reported-by: Haozhong Zhang <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
---
 drivers/acpi/nfit.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/nfit.c b/drivers/acpi/nfit.c
index 0497175ee6cb..008dbaaa2b75 100644
--- a/drivers/acpi/nfit.c
+++ b/drivers/acpi/nfit.c
@@ -2414,12 +2414,15 @@ static int acpi_nfit_add(struct acpi_device *adev)
                        acpi_desc->nfit =
                                (struct acpi_nfit_header *)obj->buffer.pointer;
                        sz = obj->buffer.length;
+                       rc = acpi_nfit_init(acpi_desc, sz);
                } else
                        dev_dbg(dev, "%s invalid type %d, ignoring _FIT\n",
                                 __func__, (int) obj->type);
-       }
+               kfree(buf.pointer);
+               acpi_desc->nfit = NULL;
+       } else
+               rc = acpi_nfit_init(acpi_desc, sz);
 
-       rc = acpi_nfit_init(acpi_desc, sz);
        if (rc) {
                nvdimm_bus_unregister(acpi_desc->nvdimm_bus);
                return rc;

_______________________________________________
Linux-nvdimm mailing list
[email protected]
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to