hwmon: (adm1275) Free allocated memory if probe function fails
[deliverable/linux.git] / drivers / hwmon / ibmaem.c
index bc6e2ab3a361d539befcc2055ebcb5a1c119f5a9..1a409c5bc9bce687922ce5389150599c6e928f39 100644 (file)
@@ -523,7 +523,7 @@ static void aem_delete(struct aem_data *data)
        aem_remove_sensors(data);
        hwmon_device_unregister(data->hwmon_dev);
        ipmi_destroy_user(data->ipmi.user);
-       dev_set_drvdata(&data->pdev->dev, NULL);
+       platform_set_drvdata(data->pdev, NULL);
        platform_device_unregister(data->pdev);
        aem_idr_put(data->id);
        kfree(data);
@@ -594,7 +594,7 @@ static int aem_init_aem1_inst(struct aem_ipmi_data *probe, u8 module_handle)
        if (res)
                goto ipmi_err;
 
-       dev_set_drvdata(&data->pdev->dev, data);
+       platform_set_drvdata(data->pdev, data);
 
        /* Set up IPMI interface */
        if (aem_init_ipmi_data(&data->ipmi, probe->interface,
@@ -630,7 +630,7 @@ sensor_err:
 hwmon_reg_err:
        ipmi_destroy_user(data->ipmi.user);
 ipmi_err:
-       dev_set_drvdata(&data->pdev->dev, NULL);
+       platform_set_drvdata(data->pdev, NULL);
        platform_device_unregister(data->pdev);
 dev_err:
        aem_idr_put(data->id);
@@ -727,7 +727,7 @@ static int aem_init_aem2_inst(struct aem_ipmi_data *probe,
        if (res)
                goto ipmi_err;
 
-       dev_set_drvdata(&data->pdev->dev, data);
+       platform_set_drvdata(data->pdev, data);
 
        /* Set up IPMI interface */
        if (aem_init_ipmi_data(&data->ipmi, probe->interface,
@@ -763,7 +763,7 @@ sensor_err:
 hwmon_reg_err:
        ipmi_destroy_user(data->ipmi.user);
 ipmi_err:
-       dev_set_drvdata(&data->pdev->dev, NULL);
+       platform_set_drvdata(data->pdev, NULL);
        platform_device_unregister(data->pdev);
 dev_err:
        aem_idr_put(data->id);
@@ -947,6 +947,7 @@ static int aem_register_sensors(struct aem_data *data,
 
        /* Set up read-only sensors */
        while (ro->label) {
+               sysfs_attr_init(&sensors->dev_attr.attr);
                sensors->dev_attr.attr.name = ro->label;
                sensors->dev_attr.attr.mode = S_IRUGO;
                sensors->dev_attr.show = ro->show;
@@ -963,6 +964,7 @@ static int aem_register_sensors(struct aem_data *data,
 
        /* Set up read-write sensors */
        while (rw->label) {
+               sysfs_attr_init(&sensors->dev_attr.attr);
                sensors->dev_attr.attr.name = rw->label;
                sensors->dev_attr.attr.mode = S_IRUGO | S_IWUSR;
                sensors->dev_attr.show = rw->show;
This page took 0.132824 seconds and 5 git commands to generate.