Commit d172132f authored by Jan Beulich's avatar Jan Beulich Committed by Guenter Roeck

x86/hwmon: don't leak device attribute file from pkgtemp_probe() and pkgtemp_remove()

While apparently inherited from coretemp source, this particular error handling
cleanup and exit path wasn't copied properly (or perhaps got discarded
intermediately and not re-added properly later).
Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Signed-off-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
(added device file removal in pkgtemp_remove)
parent d9bca435
...@@ -224,7 +224,7 @@ static int __devinit pkgtemp_probe(struct platform_device *pdev) ...@@ -224,7 +224,7 @@ static int __devinit pkgtemp_probe(struct platform_device *pdev)
err = sysfs_create_group(&pdev->dev.kobj, &pkgtemp_group); err = sysfs_create_group(&pdev->dev.kobj, &pkgtemp_group);
if (err) if (err)
goto exit_free; goto exit_dev;
data->hwmon_dev = hwmon_device_register(&pdev->dev); data->hwmon_dev = hwmon_device_register(&pdev->dev);
if (IS_ERR(data->hwmon_dev)) { if (IS_ERR(data->hwmon_dev)) {
...@@ -238,6 +238,8 @@ static int __devinit pkgtemp_probe(struct platform_device *pdev) ...@@ -238,6 +238,8 @@ static int __devinit pkgtemp_probe(struct platform_device *pdev)
exit_class: exit_class:
sysfs_remove_group(&pdev->dev.kobj, &pkgtemp_group); sysfs_remove_group(&pdev->dev.kobj, &pkgtemp_group);
exit_dev:
device_remove_file(&pdev->dev, &sensor_dev_attr_temp1_max.dev_attr);
exit_free: exit_free:
kfree(data); kfree(data);
exit: exit:
...@@ -250,6 +252,7 @@ static int __devexit pkgtemp_remove(struct platform_device *pdev) ...@@ -250,6 +252,7 @@ static int __devexit pkgtemp_remove(struct platform_device *pdev)
hwmon_device_unregister(data->hwmon_dev); hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&pdev->dev.kobj, &pkgtemp_group); sysfs_remove_group(&pdev->dev.kobj, &pkgtemp_group);
device_remove_file(&pdev->dev, &sensor_dev_attr_temp1_max.dev_attr);
platform_set_drvdata(pdev, NULL); platform_set_drvdata(pdev, NULL);
kfree(data); kfree(data);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment