I2C: OMAP: Prevent the register access after pm_runtime_put in probe
authorShubhrajyoti D <shubhrajyoti@ti.com>
Tue, 29 May 2012 10:56:16 +0000 (16:26 +0530)
committerWolfram Sang <w.sang@pengutronix.de>
Sun, 8 Jul 2012 10:49:13 +0000 (12:49 +0200)
commit62ff2c2b1a36de9dd98e9b8a575da6e6b2365740
tree2906cd9374c664eca6853fdb95b6bdc364e4164e
parentbd16c82f67a267b533e747c74c2fcd23578d4601
I2C: OMAP: Prevent the register access after pm_runtime_put in probe

Currently in probe
pm_runtime_put(dev->dev);

...
        /* i2c device drivers may be active on return from add_adapter() */
        adap->nr = pdev->id;
        r = i2c_add_numbered_adapter(adap);
        if (r) {
                dev_err(dev->dev, "failure adding adapter\n");
                goto err_free_irq;
        }
...

return 0;

err_free_irq:
        free_irq(dev->irq, dev);
err_unuse_clocks:
        omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0);
        pm_runtime_put(dev->dev);

This may access the i2c registers without the clocks in the error cases.
Fix the same by moving the pm_runtime_put after the error check.

Reviewed-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
drivers/i2c/busses/i2c-omap.c
This page took 0.024704 seconds and 5 git commands to generate.