diff options
author | Colin Ian King <colin.king@canonical.com> | 2013-03-25 06:50:05 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-03-25 18:01:00 -0400 |
commit | f0c29583db51104a7bc223b1e9c88d818f24ba4d (patch) | |
tree | 5bbf124ed11ab167be1f8b4137d7d3d992bcdaf7 /drivers/acpi/fan.c | |
parent | 994fa63c5b126df6e9f31ef4e09000e2e243234b (diff) |
ACPI / fan: avoid null pointer deference error
Fix a null pointer deference by acpi_driver_data() if device is
null. We should only set cdev and check this is OK after we are
sure device is not null.
Smatch analysis:
drivers/acpi/fan.c:179 acpi_fan_remove() warn: variable dereferenced
before check 'device' (see line 177)
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/fan.c')
-rw-r--r-- | drivers/acpi/fan.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c index f815da82c765..8d1c0105e113 100644 --- a/drivers/acpi/fan.c +++ b/drivers/acpi/fan.c | |||
@@ -174,9 +174,13 @@ static int acpi_fan_add(struct acpi_device *device) | |||
174 | 174 | ||
175 | static int acpi_fan_remove(struct acpi_device *device) | 175 | static int acpi_fan_remove(struct acpi_device *device) |
176 | { | 176 | { |
177 | struct thermal_cooling_device *cdev = acpi_driver_data(device); | 177 | struct thermal_cooling_device *cdev; |
178 | |||
179 | if (!device) | ||
180 | return -EINVAL; | ||
178 | 181 | ||
179 | if (!device || !cdev) | 182 | cdev = acpi_driver_data(device); |
183 | if (!cdev) | ||
180 | return -EINVAL; | 184 | return -EINVAL; |
181 | 185 | ||
182 | sysfs_remove_link(&device->dev.kobj, "thermal_cooling"); | 186 | sysfs_remove_link(&device->dev.kobj, "thermal_cooling"); |