drivers/rtc/rtc-pl031.c: pass correct pointer to free_irq()

Author: Lars-Peter Clausen <>

free_irq() expects the same pointer that was passed to request_irq(),
otherwise the IRQ is not freed.

The issue was found using the following coccinelle script:

  type T;
  T devid;
  request_irq(..., devid)

  type r1.T;
  T devid;
  position p;
  free_irq@p(..., devid)

  position p != r2.p;

Signed-off-by: Lars-Peter Clausen 
Cc: Srinidhi Kasagar 
Cc: Linus Walleij 
Signed-off-by: Andrew Morton 
Signed-off-by: Linus Torvalds 
 drivers/rtc/rtc-pl031.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c
index 8900ea7..0f0609b 100644
--- a/drivers/rtc/rtc-pl031.c
+++ b/drivers/rtc/rtc-pl031.c
@@ -306,7 +306,7 @@ static int pl031_remove(struct amba_device *adev)
 	struct pl031_local *ldata = dev_get_drvdata(&adev->dev);
 	amba_set_drvdata(adev, NULL);
-	free_irq(adev->irq[0], ldata->rtc);
+	free_irq(adev->irq[0], ldata);