There is no need to use API with _irqsave in grgpio_irq_handler(), because it already be in a irq-disabled context. Signed-off-by: Luo Jiaxing <luojiaxing@xxxxxxxxxx> --- drivers/gpio/gpio-grgpio.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/gpio/gpio-grgpio.c b/drivers/gpio/gpio-grgpio.c index f954359..fa5aa31 100644 --- a/drivers/gpio/gpio-grgpio.c +++ b/drivers/gpio/gpio-grgpio.c @@ -195,11 +195,10 @@ static irqreturn_t grgpio_irq_handler(int irq, void *dev) { struct grgpio_priv *priv = dev; int ngpio = priv->gc.ngpio; - unsigned long flags; int i; int match = 0; - spin_lock_irqsave(&priv->gc.bgpio_lock, flags); + spin_lock(&priv->gc.bgpio_lock); /* * For each gpio line, call its interrupt handler if it its underlying @@ -215,7 +214,7 @@ static irqreturn_t grgpio_irq_handler(int irq, void *dev) } } - spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags); + spin_unlock(&priv->gc.bgpio_lock); if (!match) dev_warn(priv->dev, "No gpio line matched irq %d\n", irq); -- 2.7.4