Le 10/02/2011 16:08, Linus Walleij : > Fixes the following: > - It is perfectly legal for the dma_map_sg() to return fewer > entries than were passed in. > - Supply the returned numer of (possibly coalesced) entries to > the device_pre_slave_sg() function. > - Use the proper original sg_len when unmapping the sglist > in the error path. > > Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx> Signed-off-by: Nicolas Ferre <nicolas.ferre@xxxxxxxxx> > --- > drivers/mmc/host/atmel-mci.c | 7 +++---- > 1 files changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c > index 045bdbb..df5a135 100644 > --- a/drivers/mmc/host/atmel-mci.c > +++ b/drivers/mmc/host/atmel-mci.c > @@ -687,10 +687,9 @@ atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data) > > sglen = dma_map_sg(chan->device->dev, data->sg, > data->sg_len, direction); > - if (sglen != data->sg_len) > - goto unmap_exit; > + > desc = chan->device->device_prep_slave_sg(chan, > - data->sg, data->sg_len, direction, > + data->sg, sglen, direction, > DMA_PREP_INTERRUPT | DMA_CTRL_ACK); > if (!desc) > goto unmap_exit; > @@ -701,7 +700,7 @@ atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data) > > return 0; > unmap_exit: > - dma_unmap_sg(chan->device->dev, data->sg, sglen, direction); > + dma_unmap_sg(chan->device->dev, data->sg, data->sg_len, direction); > return -ENOMEM; > } > -- Nicolas Ferre -- 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