Commit 8a66fdae authored by Axel Lin's avatar Axel Lin Committed by Ulf Hansson

mmc: toshsd: Fix unbalanced locking

Fix returning IRQ_HANDLED with spin_lock held.
Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 1818681c
...@@ -176,7 +176,8 @@ static irqreturn_t toshsd_thread_irq(int irq, void *dev_id) ...@@ -176,7 +176,8 @@ static irqreturn_t toshsd_thread_irq(int irq, void *dev_id)
spin_lock_irqsave(&host->lock, flags); spin_lock_irqsave(&host->lock, flags);
if (!sg_miter_next(sg_miter)) if (!sg_miter_next(sg_miter))
return IRQ_HANDLED; goto done;
buf = sg_miter->addr; buf = sg_miter->addr;
/* Ensure we dont read more than one block. The chip will interrupt us /* Ensure we dont read more than one block. The chip will interrupt us
...@@ -198,6 +199,7 @@ static irqreturn_t toshsd_thread_irq(int irq, void *dev_id) ...@@ -198,6 +199,7 @@ static irqreturn_t toshsd_thread_irq(int irq, void *dev_id)
sg_miter->consumed = count; sg_miter->consumed = count;
sg_miter_stop(sg_miter); sg_miter_stop(sg_miter);
done:
spin_unlock_irqrestore(&host->lock, flags); spin_unlock_irqrestore(&host->lock, flags);
return IRQ_HANDLED; return IRQ_HANDLED;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment