diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-02-11 18:52:49 -0500 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-02-12 08:55:16 -0500 |
commit | 0f6aa09e40c38d734f5d70762056116ca4a76126 (patch) | |
tree | b6c7d8d5133432e97ba9e42a6d3df94b1b828e4e /drivers/acpi | |
parent | 8fcfb99c8e29c73dd8945b6105ef54ca4eeb171e (diff) |
ACPI / container: Fix error code path in container_device_attach()
To avoid leaking memory on errors from device_register(), do a
put_device() on the device object in question in the error code
path of container_device_attach().
Fixes: caa73ea158de (ACPI / hotplug / driver core: Handle containers in a special way)
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/container.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/acpi/container.c b/drivers/acpi/container.c index 0b6ae6eb5c4a..368f9ddb8480 100644 --- a/drivers/acpi/container.c +++ b/drivers/acpi/container.c | |||
@@ -79,9 +79,10 @@ static int container_device_attach(struct acpi_device *adev, | |||
79 | ACPI_COMPANION_SET(dev, adev); | 79 | ACPI_COMPANION_SET(dev, adev); |
80 | dev->release = acpi_container_release; | 80 | dev->release = acpi_container_release; |
81 | ret = device_register(dev); | 81 | ret = device_register(dev); |
82 | if (ret) | 82 | if (ret) { |
83 | put_device(dev); | ||
83 | return ret; | 84 | return ret; |
84 | 85 | } | |
85 | adev->driver_data = dev; | 86 | adev->driver_data = dev; |
86 | return 1; | 87 | return 1; |
87 | } | 88 | } |