From: Michael Hennerich <michael.hennerich@xxxxxxxxxx> - Rename ad7879_destruct() to ad7879_destroy() - Test flag with spinlock hold Signed-off-by: Michael Hennerich <michael.hennerich@xxxxxxxxxx> Signed-off-by: Bryan Wu <cooloney@xxxxxxxxxx> --- drivers/input/touchscreen/ad7879.c | 19 +++++++++++-------- 1 files changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/input/touchscreen/ad7879.c b/drivers/input/touchscreen/ad7879.c index 6865974..8e62f8a 100644 --- a/drivers/input/touchscreen/ad7879.c +++ b/drivers/input/touchscreen/ad7879.c @@ -242,10 +242,12 @@ static void ad7879_disable(struct ad7879 *ts) { unsigned long flags; - if (ts->disabled) + spin_lock_irqsave(&ts->lock, flags); + if (ts->disabled) { + spin_unlock_irqrestore(&ts->lock, flags); return; + } - spin_lock_irqsave(&ts->lock, flags); ts->disabled = 1; disable_irq(ts->bus->irq); spin_unlock_irqrestore(&ts->lock, flags); @@ -264,10 +266,11 @@ static void ad7879_enable(struct ad7879 *ts) { unsigned long flags; - if (!ts->disabled) - return; - spin_lock_irqsave(&ts->lock, flags); + if (ts->disabled) { + spin_unlock_irqrestore(&ts->lock, flags); + return; + } ts->disabled = 0; enable_irq(ts->bus->irq); spin_unlock_irqrestore(&ts->lock, flags); @@ -485,7 +488,7 @@ err_free_mem: return err; } -static int __devexit ad7879_destruct(bus_device *bus, struct ad7879 *ts) +static int __devexit ad7879_destroy(bus_device *bus, struct ad7879 *ts) { ad7879_disable(ts); ad7879_write(ts->bus, AD7879_REG_CTRL2, @@ -667,7 +670,7 @@ static int __devexit ad7879_remove(struct spi_device *spi) { struct ad7879 *ts = dev_get_drvdata(&spi->dev); - ad7879_destruct(spi, ts); + ad7879_destroy(spi, ts); dev_set_drvdata(&spi->dev, NULL); kfree(ts); return 0; @@ -753,7 +756,7 @@ static int __devexit ad7879_remove(struct i2c_client *client) { struct ad7879 *ts = dev_get_drvdata(&client->dev); - ad7879_destruct(client, ts); + ad7879_destroy(client, ts); i2c_set_clientdata(client, NULL); kfree(ts); return 0; -- 1.5.6 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html