diff options
| author | Jiang Liu <jiang.liu@linux.intel.com> | 2013-12-19 07:38:12 -0500 |
|---|---|---|
| committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-01-05 10:07:14 -0500 |
| commit | 54e5bb46597e5eba63e460a1f96eb2021dc71fec (patch) | |
| tree | fdd47cfce49f0a3fc4ed39623a28e133f4abc6f5 | |
| parent | a65ac52041cccaf598995bc44340849027f1d79b (diff) | |
PCI / pci-label: release allocated ACPI object on error recovery path
Function dsm_get_label() leaks the returned ACPI object if
obj->package.count is not 2, so fix the possible memory leak.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
| -rw-r--r-- | drivers/pci/pci-label.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/pci/pci-label.c b/drivers/pci/pci-label.c index d51f45aa669e..f6e01a500d79 100644 --- a/drivers/pci/pci-label.c +++ b/drivers/pci/pci-label.c | |||
| @@ -233,11 +233,7 @@ dsm_get_label(acpi_handle handle, int func, | |||
| 233 | return -1; | 233 | return -1; |
| 234 | 234 | ||
| 235 | obj = (union acpi_object *)output->pointer; | 235 | obj = (union acpi_object *)output->pointer; |
| 236 | 236 | if (obj->type == ACPI_TYPE_PACKAGE && obj->package.count == 2) { | |
| 237 | switch (obj->type) { | ||
| 238 | case ACPI_TYPE_PACKAGE: | ||
| 239 | if (obj->package.count != 2) | ||
| 240 | break; | ||
| 241 | len = obj->package.elements[0].integer.value; | 237 | len = obj->package.elements[0].integer.value; |
| 242 | if (buf) { | 238 | if (buf) { |
| 243 | if (attribute == ACPI_ATTR_INDEX_SHOW) | 239 | if (attribute == ACPI_ATTR_INDEX_SHOW) |
| @@ -250,10 +246,10 @@ dsm_get_label(acpi_handle handle, int func, | |||
| 250 | } | 246 | } |
| 251 | kfree(output->pointer); | 247 | kfree(output->pointer); |
| 252 | return len; | 248 | return len; |
| 253 | break; | ||
| 254 | default: | ||
| 255 | kfree(output->pointer); | ||
| 256 | } | 249 | } |
| 250 | |||
| 251 | kfree(output->pointer); | ||
| 252 | |||
| 257 | return -1; | 253 | return -1; |
| 258 | } | 254 | } |
| 259 | 255 | ||
