All of lore.kernel.org
 help / color / mirror / Atom feed
* [bug report] dmaengine: check device and channel list for empty
@ 2020-07-09  9:10 dan.carpenter
  0 siblings, 0 replies; only message in thread
From: dan.carpenter @ 2020-07-09  9:10 UTC (permalink / raw)
  To: dave.jiang; +Cc: dmaengine

Hello Dave Jiang,

The patch deb9541f5052: "dmaengine: check device and channel list for
empty" from Jun 26, 2020, leads to the following static checker
warnings:

drivers/mmc/host/omap_hsmmc.c:1959 omap_hsmmc_probe() warn: 'host->rx_chan' can also be NULL
drivers/mmc/host/omap_hsmmc.c:1959 omap_hsmmc_probe() warn: 'host->tx_chan' can also be NULL
drivers/media/platform/xilinx/xilinx-dma.c:736 xvip_dma_init() warn: 'dma->dma' can also be NULL
drivers/spi/spi-fsl-dspi.c:520 dspi_request_dma() warn: 'dma->chan_tx' can also be NULL
drivers/spi/spi-fsl-dspi.c:528 dspi_request_dma() warn: 'dma->chan_rx' can also be NULL
drivers/iio/adc/ti_am335x_adc.c:565 tiadc_request_dma() warn: 'dma->chan' can also be NULL
drivers/iio/adc/stm32-dfsdm-adc.c:1381 stm32_dfsdm_dma_request() warn: 'adc->dma_chan' can also be NULL
drivers/iio/adc/stm32-adc.c:1837 stm32_adc_dma_request() warn: 'adc->dma_chan' can also be NULL
drivers/iio/adc/at91-sama5d2_adc.c:1520 at91_adc_dma_init() warn: 'st->dma_st.dma_chan' can also be NULL
sound/soc/ti/davinci-mcasp.c:1902 davinci_mcasp_get_dma_type() warn: 'chan' can also be NULL

drivers/mmc/host/omap_hsmmc.c
  1937  
  1938          host->rx_chan = dma_request_chan(&pdev->dev, "rx");
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The dma_request_chan() function used to only return error pointers or
a valid pointer.  We need to update the comments at the start of the
function to explain about the new NULL return.

  1939          if (IS_ERR(host->rx_chan)) {
  1940                  dev_err(mmc_dev(host->mmc), "RX DMA channel request failed\n");
  1941                  ret = PTR_ERR(host->rx_chan);
  1942                  goto err_irq;
  1943          }
  1944  
  1945          host->tx_chan = dma_request_chan(&pdev->dev, "tx");
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  1946          if (IS_ERR(host->tx_chan)) {
  1947                  dev_err(mmc_dev(host->mmc), "TX DMA channel request failed\n");
  1948                  ret = PTR_ERR(host->tx_chan);
  1949                  goto err_irq;
  1950          }
  1951  
  1952          /*
  1953           * Limit the maximum segment size to the lower of the request size
  1954           * and the DMA engine device segment size limits.  In reality, with
  1955           * 32-bit transfers, the DMA engine can do longer segments than this
  1956           * but there is no way to represent that in the DMA model - if we
  1957           * increase this figure here, we get warnings from the DMA API debug.
  1958           */
  1959          mmc->max_seg_size = min3(mmc->max_req_size,
  1960                          dma_get_max_seg_size(host->rx_chan->device->dev),
                                                     ^^^^^^^^^^^^^^^
This will Oops.

  1961                          dma_get_max_seg_size(host->tx_chan->device->dev));
  1962  
  1963          /* Request IRQ for MMC operations */
  1964          ret = devm_request_irq(&pdev->dev, host->irq, omap_hsmmc_irq, 0,
  1965                          mmc_hostname(mmc), host);
  1966          if (ret) {
  1967                  dev_err(mmc_dev(host->mmc), "Unable to grab HSMMC IRQ\n");

regards,
dan carpenter

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-07-09  9:10 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-09  9:10 [bug report] dmaengine: check device and channel list for empty dan.carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.