Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mmc: toshsd: Fix unbalanced locking

Fix returning IRQ_HANDLED with spin_lock held.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

authored by

Axel Lin and committed by
Ulf Hansson
8a66fdae 1818681c

+3 -1
+3 -1
drivers/mmc/host/toshsd.c
··· 176 176 spin_lock_irqsave(&host->lock, flags); 177 177 178 178 if (!sg_miter_next(sg_miter)) 179 - return IRQ_HANDLED; 179 + goto done; 180 + 180 181 buf = sg_miter->addr; 181 182 182 183 /* Ensure we dont read more than one block. The chip will interrupt us ··· 199 198 sg_miter->consumed = count; 200 199 sg_miter_stop(sg_miter); 201 200 201 + done: 202 202 spin_unlock_irqrestore(&host->lock, flags); 203 203 204 204 return IRQ_HANDLED;