lkml.org 
[lkml]   [2010]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[08/34] mmc: atmel-mci: prevent kernel oops while removing card
    2.6.34-stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Nicolas Ferre <nicolas.ferre@atmel.com>

    commit 009a891b22395fc86e5f34057d79fffee4509ab5 upstream.

    The removing of an SD card in certain circumstances can lead to a kernel
    oops if we do not make sure that the "data" field of the host structure is
    valid. This patch adds a test in atmci_dma_cleanup() function and also
    calls atmci_stop_dma() before throwing away the reference to data.

    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
    Cc: <linux-mmc@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/mmc/host/atmel-mci.c | 9 +++++----
    1 file changed, 5 insertions(+), 4 deletions(-)
    --- a/drivers/mmc/host/atmel-mci.c
    +++ b/drivers/mmc/host/atmel-mci.c
    @@ -530,9 +530,10 @@ static void atmci_dma_cleanup(struct atm
    {
    struct mmc_data *data = host->data;

    - dma_unmap_sg(&host->pdev->dev, data->sg, data->sg_len,
    - ((data->flags & MMC_DATA_WRITE)
    - ? DMA_TO_DEVICE : DMA_FROM_DEVICE));
    + if (data)
    + dma_unmap_sg(&host->pdev->dev, data->sg, data->sg_len,
    + ((data->flags & MMC_DATA_WRITE)
    + ? DMA_TO_DEVICE : DMA_FROM_DEVICE));
    }

    static void atmci_stop_dma(struct atmel_mci *host)
    @@ -1037,8 +1038,8 @@ static void atmci_command_complete(struc
    "command error: status=0x%08x\n", status);

    if (cmd->data) {
    - host->data = NULL;
    atmci_stop_dma(host);
    + host->data = NULL;
    mci_writel(host, IDR, MCI_NOTBUSY
    | MCI_TXRDY | MCI_RXRDY
    | ATMCI_DATA_ERROR_FLAGS);



    \
     
     \ /
      Last update: 2010-05-25 01:17    [from the cache]
    ©2003-2011 Jasper Spaans