On Wednesday, March 27, 2013 02:29:45 PM Colin King wrote: > From: Colin Ian King <colin.king@xxxxxxxxxxxxx> > > 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/platform/x86/intel_menlow.c:207 intel_menlow_memory_remove() > warn: variable dereferenced before check 'device' (see line 205) > > Signed-off-by: Colin Ian King <colin.king@xxxxxxxxxxxxx> > --- > drivers/platform/x86/intel_menlow.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/platform/x86/intel_menlow.c > b/drivers/platform/x86/intel_menlow.c index d6cfc15..42691c6 100644 > --- a/drivers/platform/x86/intel_menlow.c > +++ b/drivers/platform/x86/intel_menlow.c > @@ -202,9 +202,13 @@ static int intel_menlow_memory_add(struct acpi_device > *device) > > static int intel_menlow_memory_remove(struct acpi_device *device) > { > - struct thermal_cooling_device *cdev = acpi_driver_data(device); > + struct thermal_cooling_device *cdev; > + > + if (!device) > + return -EINVAL; How can 'device' be NULL here? And I am pretty sure that 'cdev' is also always not NULL if ACPI device is properly bound to this driver, so the proper fix would be to remove the check altogether. > > - if (!device || !cdev) > + cdev = acpi_driver_data(device); > + if (!cdev) > return -EINVAL; > > sysfs_remove_link(&device->dev.kobj, "thermal_cooling"); Thanks. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html