On Wed, Jun 10, 2015 at 3:44 PM, Daniel Drake <[email protected]> wrote:
> On Wed, Jun 10, 2015 at 2:53 AM, Carlo Caione <[email protected]> wrote:
>> +static int meson_mmc_map_dma(struct meson_mmc_host *host,
>> +                            struct mmc_data *data,
>> +                            unsigned int flags)
>> +{      u32 i, dma_len;
>> +       struct scatterlist *sg;
>> +
>> +       dma_len = dma_map_sg(mmc_dev(host->mmc), data->sg, data->sg_len,
>> +                            ((data->flags & MMC_DATA_READ) ?
>> +                            DMA_FROM_DEVICE : DMA_TO_DEVICE));
>> +       if (dma_len == 0) {
>> +               dev_err(mmc_dev(host->mmc), "dma_map_sg failed\n");
>> +               return -ENOMEM;
>> +       }
>> +
>> +       for_each_sg(data->sg, sg, data->sg_len, i) {
>> +               if (sg->offset & 3 || sg->length & 3) {
>> +                       dev_err(mmc_dev(host->mmc),
>> +                               "unaligned scatterlist: os %x length %d\n",
>> +                               sg->offset, sg->length);
>> +                       return -EINVAL;
>> +               }
>> +       }
>
> If the offset/length check fails here, do you leak the DMA mapping?
> If so, can you do the offset/length check first to avoid that?

Good idea. Fix in v3.

> There should only ever be 1 entry in the scatterlist, right? In that
> case you can do a simple check there, and then instead of looping,
> just check the first entry in the scatterlist.

Right.

I'm going to wait a couple of days for more comments before submitting v3.

Thanks,

-- 
Carlo Caione  |  +39.340.80.30.096  |  Endless
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to