]> Pileus Git - ~andy/linux/blobdiff - drivers/hwmon/sht15.c
perf/probes: Improve error messages
[~andy/linux] / drivers / hwmon / sht15.c
index 6290a259456e8fbae6d5df180cd9825033b46217..ebe38b680ee38494520c5cf162e50a027ab21799 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/hwmon-sysfs.h>
 #include <linux/mutex.h>
 #include <linux/platform_device.h>
+#include <linux/sched.h>
 #include <linux/delay.h>
 #include <linux/jiffies.h>
 #include <linux/err.h>
@@ -562,7 +563,7 @@ static int __devinit sht15_probe(struct platform_device *pdev)
        ret = sysfs_create_group(&pdev->dev.kobj, &sht15_attr_group);
        if (ret) {
                dev_err(&pdev->dev, "sysfs create failed");
-               goto err_free_data;
+               goto err_release_gpio_data;
        }
 
        ret = request_irq(gpio_to_irq(data->pdata->gpio_data),
@@ -581,10 +582,12 @@ static int __devinit sht15_probe(struct platform_device *pdev)
        data->hwmon_dev = hwmon_device_register(data->dev);
        if (IS_ERR(data->hwmon_dev)) {
                ret = PTR_ERR(data->hwmon_dev);
-               goto err_release_gpio_data;
+               goto err_release_irq;
        }
        return 0;
 
+err_release_irq:
+       free_irq(gpio_to_irq(data->pdata->gpio_data), data);
 err_release_gpio_data:
        gpio_free(data->pdata->gpio_data);
 err_release_gpio_sck:
@@ -620,7 +623,12 @@ static int __devexit sht15_remove(struct platform_device *pdev)
 }
 
 
-static struct platform_driver sht_drivers[] = {
+/*
+ * sht_drivers simultaneously refers to __devinit and __devexit function
+ * which causes spurious section mismatch warning. So use __refdata to
+ * get rid from this.
+ */
+static struct platform_driver __refdata sht_drivers[] = {
        {
                .driver = {
                        .name = "sht10",