[bug report] staging: mt7621-dma: ralink: add rt2880 dma engine
Dan Carpenter
dan.carpenter at oracle.com
Thu Oct 18 09:31:01 UTC 2018
Hello NeilBrown,
The patch 0853c7a53eb3: "staging: mt7621-dma: ralink: add rt2880 dma
engine" from Mar 15, 2018, leads to the following static checker
warning:
drivers/staging/mt7621-dma/mtk-hsdma.c:344 mtk_hsdma_start_transfer()
error: potentially dereferencing uninitialized 'tx_desc'.
drivers/staging/mt7621-dma/mtk-hsdma.c
321 static int mtk_hsdma_start_transfer(struct mtk_hsdam_engine *hsdma,
322 struct mtk_hsdma_chan *chan)
323 {
324 dma_addr_t src, dst;
325 size_t len, tlen;
326 struct hsdma_desc *tx_desc, *rx_desc;
^^^^^^^
327 struct mtk_hsdma_sg *sg;
328 unsigned int i;
329 int rx_idx;
330
331 sg = &chan->desc->sg[0];
332 len = sg->len;
333 chan->desc->num_sgs = DIV_ROUND_UP(len, HSDMA_MAX_PLEN);
334
335 /* tx desc */
336 src = sg->src_addr;
337 for (i = 0; i < chan->desc->num_sgs; i++) {
338 if (len > HSDMA_MAX_PLEN)
339 tlen = HSDMA_MAX_PLEN;
340 else
341 tlen = len;
342
343 if (i & 0x1) {
344 tx_desc->addr1 = src;
^^^^^^^^^^^^^^
345 tx_desc->flags |= HSDMA_DESC_PLEN1(tlen);
346 } else {
347 tx_desc = &chan->tx_ring[chan->tx_idx];
348 tx_desc->addr0 = src;
349 tx_desc->flags = HSDMA_DESC_PLEN0(tlen);
350
351 /* update index */
352 chan->tx_idx = HSDMA_NEXT_DESC(chan->tx_idx);
353 }
354
355 src += tlen;
356 len -= tlen;
357 }
358 if (i & 0x1)
359 tx_desc->flags |= HSDMA_DESC_LS0;
^^^^^^^^^^^^^^
Never initialized.
360 else
361 tx_desc->flags |= HSDMA_DESC_LS1;
362
363 /* rx desc */
364 rx_idx = HSDMA_NEXT_DESC(chan->rx_idx);
365 len = sg->len;
regards,
dan carpenter
More information about the devel
mailing list