Commit d38a648d authored by M Chetan Kumar's avatar M Chetan Kumar Committed by David S. Miller

net: wwan: iosm: fix memory leak in ipc_pcie_read_bios_cfg

ipc_pcie_read_bios_cfg() is using the acpi_evaluate_dsm() to
obtain the wwan power state configuration from BIOS but is
not freeing the acpi_object. The acpi_evaluate_dsm() returned
acpi_object to be freed.

Free the acpi_object after use.

Fixes: 7e98d785 ("net: iosm: entry point")
Signed-off-by: default avatarM Chetan Kumar <m.chetan.kumar@linux.intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 742c60e1
...@@ -232,6 +232,7 @@ static void ipc_pcie_config_init(struct iosm_pcie *ipc_pcie) ...@@ -232,6 +232,7 @@ static void ipc_pcie_config_init(struct iosm_pcie *ipc_pcie)
*/ */
static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev) static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev)
{ {
enum ipc_pcie_sleep_state sleep_state = IPC_PCIE_D0L12;
union acpi_object *object; union acpi_object *object;
acpi_handle handle_acpi; acpi_handle handle_acpi;
...@@ -242,12 +243,16 @@ static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev) ...@@ -242,12 +243,16 @@ static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev)
} }
object = acpi_evaluate_dsm(handle_acpi, &wwan_acpi_guid, 0, 3, NULL); object = acpi_evaluate_dsm(handle_acpi, &wwan_acpi_guid, 0, 3, NULL);
if (!object)
goto default_ret;
if (object->integer.value == 3)
sleep_state = IPC_PCIE_D3L2;
if (object && object->integer.value == 3) kfree(object);
return IPC_PCIE_D3L2;
default_ret: default_ret:
return IPC_PCIE_D0L12; return sleep_state;
} }
static int ipc_pcie_probe(struct pci_dev *pci, static int ipc_pcie_probe(struct pci_dev *pci,
......
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