diff options
author | Colin Ian King <colin.king@canonical.com> | 2013-03-25 10:50:05 +0000 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-03-25 23:01:00 +0100 |
commit | f0c29583db51104a7bc223b1e9c88d818f24ba4d (patch) | |
tree | 5bbf124ed11ab167be1f8b4137d7d3d992bcdaf7 /drivers/acpi | |
parent | 994fa63c5b126df6e9f31ef4e09000e2e243234b (diff) | |
download | linux-stable-f0c29583db51104a7bc223b1e9c88d818f24ba4d.tar.gz linux-stable-f0c29583db51104a7bc223b1e9c88d818f24ba4d.tar.bz2 linux-stable-f0c29583db51104a7bc223b1e9c88d818f24ba4d.zip |
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')
-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) static int acpi_fan_remove(struct acpi_device *device) { - struct thermal_cooling_device *cdev = acpi_driver_data(device); + struct thermal_cooling_device *cdev; + + if (!device) + return -EINVAL; - if (!device || !cdev) + cdev = acpi_driver_data(device); + if (!cdev) return -EINVAL; sysfs_remove_link(&device->dev.kobj, "thermal_cooling"); |