mmc: atmel-mci: fix incorrect setting of host->data to NULL
authorNicolas Ferre <nicolas.ferre@atmel.com>
Fri, 6 Jul 2012 09:58:33 +0000 (11:58 +0200)
committerChris Ball <cjb@laptop.org>
Sun, 22 Jul 2012 19:25:50 +0000 (15:25 -0400)
Setting host->data to NULL is incorrect sequence in STATE_SENDING_STOP
state of FSM: This early setting leads to the skip of dma_unmap_sg()
in atmci_dma_cleanup() which is a bug.

Idea taken from dw_mmc by Seungwon Jeon.

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Seungwon Jeon <tgih.jun@samsung.com>
Acked-by: Ludovic Desroches <ludovic.desroches@atmel.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/atmel-mci.c

index f2c115e..84c4ac4 100644 (file)
@@ -1685,7 +1685,6 @@ static void atmci_tasklet_func(unsigned long priv)
 
                        dev_dbg(&host->pdev->dev, "FSM: cmd ready\n");
                        host->cmd = NULL;
-                       host->data = NULL;
                        data->bytes_xfered = data->blocks * data->blksz;
                        data->error = 0;
                        atmci_command_complete(host, mrq->stop);
@@ -1699,6 +1698,7 @@ static void atmci_tasklet_func(unsigned long priv)
                                atmci_writel(host, ATMCI_IER, ATMCI_NOTBUSY);
                                state = STATE_WAITING_NOTBUSY;
                        }
+                       host->data = NULL;
                        break;
 
                case STATE_END_REQUEST: