On Tue, Oct 11, 2011 at 04:06:41PM +0200, Ulf Hansson wrote: > The patch "mmc: core: move ->request() call from atomic context", > is the reason to why this change is possible. This simplifies the > error handling code execution path quite a lot and potentially also > fixes some error handling hang problems. > > Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxxxxxx> This doesn't look right: void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq) { if (err && cmd->retries) { host->ops->request(host, mrq); So, not dropping the spinlock results in calling the request function with the spinlock held - and as the request function then goes on to lock the spinlock, we will deadlock. I don't see anything in current mainline which addresses this, so I'm not able to queue this patch. -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html