Petr Cvek <petr.cvek@xxxxxx> writes: > The pxamci_dma_irq() and pxamci_data_done() should print errors if they > obtains invalid parameters. Make the pxamci_dma_irq() call with > the MMC_DATA_READ flag a fault as the DMA callback is used only for write. > > Signed-off-by: Petr Cvek <petr.cvek@xxxxxx> > --- > drivers/mmc/host/pxamci.c | 33 ++++++++++++++++++++++++--------- > 1 file changed, 24 insertions(+), 9 deletions(-) > > diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c > index 80bc8065b50f..48c26d848e9f 100644 > --- a/drivers/mmc/host/pxamci.c > +++ b/drivers/mmc/host/pxamci.c > @@ -354,13 +354,22 @@ static int pxamci_data_done(struct pxamci_host *host, unsigned int stat) > struct mmc_data *data = host->data; > struct dma_chan *chan; > > - if (!data) > + if (!data) { > + pr_err("%s: Missing data structure\n", > + mmc_hostname(host->mmc)); I'd rather have : dev_err(mmc_dev(mmc), ...) > return 0; > + } > > if (data->flags & MMC_DATA_READ) > chan = host->dma_chan_rx; > - else > + else if (data->flags & MMC_DATA_WRITE) > chan = host->dma_chan_tx; > + else { > + pr_err("%s: Unknown data direction, flags=%08x\n", > + mmc_hostname(host->mmc), data->flags); Ditto. > + if (!host->data) { > + pr_err("%s: Missing data structure\n", > + mmc_hostname(host->mmc)); Ditto. > goto out_unlock; > + } > > - if (host->data->flags & MMC_DATA_READ) > - chan = host->dma_chan_rx; > - else > - chan = host->dma_chan_tx; > + if (!(host->data->flags & MMC_DATA_WRITE)) { > + pr_err("%s: DMA callback is only for tx channel, flags=%x\n", > + mmc_hostname(host->mmc), host->data->flags); Ditto. > + goto out_unlock; > + } > + > + chan = host->dma_chan_tx; > > status = dmaengine_tx_status(chan, host->dma_cookie, &state); > > if (likely(status == DMA_COMPLETE)) { > writel(BUF_PART_FULL, host->base + MMC_PRTBUF); > } else { > - pr_err("%s: DMA error on %s channel\n", mmc_hostname(host->mmc), > - host->data->flags & MMC_DATA_READ ? "rx" : "tx"); > + pr_err("%s: Invalid DMA status %i\n", mmc_hostname(host->mmc), > + status); Ditto. Cheers. -- Robert -- 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