On Wed, Aug 24, 2011 at 08:07:12PM +0530, Keerthy wrote:
...
> + temp_sensor->phy_base = ioremap(mem->start, resource_size(mem));
Check NULL return.
temp_sensor->phy_base is never iounmapped in error paths or _remove
function.
...
> +static int __devexit omap_temp_sensor_remove(struct platform_device *pdev)
> +{
> + struct omap_temp_sensor *temp_sensor = platform_get_drvdata(pdev);
> +
> + hwmon_device_unregister(&pdev->dev);
> + kobject_uevent(&temp_sensor->hwmon_dev->kobj, KOBJ_REMOVE);
> + sysfs_remove_group(&temp_sensor->hwmon_dev->kobj,
> + &omap_temp_sensor_group);
> + omap_temp_sensor_clk_disable(temp_sensor);
> + free_irq(temp_sensor->irq, temp_sensor);
free_irq before omap_temp_sensor_clk_disable, to avoid ISR attempting
to access hardware while unclocked.
> + clk_put(temp_sensor->clock);
> + dev_set_drvdata(&pdev->dev, NULL);
> + mutex_destroy(&temp_sensor->sensor_mutex);
> + kfree(temp_sensor);
> +
> + return 0;
> +}
Todd
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html