[PATCH 3.16.y-ckt 130/165] Revert "i2c: core: Dispose OF IRQ mapping at client removal time"

Luis Henriques luis.henriques at canonical.com
Wed Mar 25 14:01:43 UTC 2015


3.16.7-ckt9 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Jakub Kicinski <kubakici at wp.pl>

commit a49445727014216703a3c28ccee4cef36d41571e upstream.

This reverts commit e4df3a0b6228
("i2c: core: Dispose OF IRQ mapping at client removal time")

Calling irq_dispose_mapping() will destroy the mapping and disassociate
the IRQ from the IRQ chip to which it belongs. Keeping it is OK, because
existent mappings are reused properly.

Also, this commit breaks drivers using devm* for IRQ management on
OF-based systems because devm* cleanup happens in device code, after
bus's remove() method returns.

Signed-off-by: Jakub Kicinski <kubakici at wp.pl>
Reported-by: Sébastien Szymanski <sebastien.szymanski at armadeus.com>
Acked-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov at gmail.com>
[wsa: updated the commit message with findings fromt the other bug report]
Signed-off-by: Wolfram Sang <wsa at the-dreams.de>
Fixes: e4df3a0b6228
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
---
 drivers/i2c/i2c-core.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 4716eb0bddcd..7c7f4b856bad 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -297,9 +297,6 @@ static int i2c_device_remove(struct device *dev)
 		status = driver->remove(client);
 	}
 
-	if (dev->of_node)
-		irq_dispose_mapping(client->irq);
-
 	acpi_dev_pm_detach(&client->dev, true);
 	return status;
 }




More information about the kernel-team mailing list