[PATCH] mtd: rawnand: Fix return value check of wait_for_completion_timeout

kernel test robot lkp at intel.com
Mon Apr 11 22:01:31 PDT 2022


Hi Miaoqian,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on mtd/nand/next]
[also build test WARNING on linus/master linux/master v5.18-rc2 next-20220411]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Miaoqian-Lin/mtd-rawnand-Fix-return-value-check-of-wait_for_completion_timeout/20220412-101006
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next
config: hexagon-randconfig-r045-20220411 (https://download.01.org/0day-ci/archive/20220412/202204121253.NcZifMQi-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project fe2478d44e4f7f191c43fef629ac7a23d0251e72)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/3de25b46a3f73a3e0031e5186eb4e2afa9098b46
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Miaoqian-Lin/mtd-rawnand-Fix-return-value-check-of-wait_for_completion_timeout/20220412-101006
        git checkout 3de25b46a3f73a3e0031e5186eb4e2afa9098b46
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/mtd/nand/raw/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>

All warnings (new ones prefixed by >>):

>> drivers/mtd/nand/raw/sh_flctl.c:433:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
           if (time_left == 0) {
               ^~~~~~~~~~~~~~
   drivers/mtd/nand/raw/sh_flctl.c:447:9: note: uninitialized use occurs here
           return ret;
                  ^~~
   drivers/mtd/nand/raw/sh_flctl.c:433:2: note: remove the 'if' if its condition is always true
           if (time_left == 0) {
           ^~~~~~~~~~~~~~~~~~~~
   drivers/mtd/nand/raw/sh_flctl.c:387:9: note: initialize the variable 'ret' to silence this warning
           int ret;
                  ^
                   = 0
   1 warning generated.


vim +433 drivers/mtd/nand/raw/sh_flctl.c

   377	
   378	static int flctl_dma_fifo0_transfer(struct sh_flctl *flctl, unsigned long *buf,
   379						int len, enum dma_data_direction dir)
   380	{
   381		struct dma_async_tx_descriptor *desc = NULL;
   382		struct dma_chan *chan;
   383		enum dma_transfer_direction tr_dir;
   384		dma_addr_t dma_addr;
   385		dma_cookie_t cookie;
   386		uint32_t reg;
   387		int ret;
   388		unsigned long time_left;
   389	
   390		if (dir == DMA_FROM_DEVICE) {
   391			chan = flctl->chan_fifo0_rx;
   392			tr_dir = DMA_DEV_TO_MEM;
   393		} else {
   394			chan = flctl->chan_fifo0_tx;
   395			tr_dir = DMA_MEM_TO_DEV;
   396		}
   397	
   398		dma_addr = dma_map_single(chan->device->dev, buf, len, dir);
   399	
   400		if (!dma_mapping_error(chan->device->dev, dma_addr))
   401			desc = dmaengine_prep_slave_single(chan, dma_addr, len,
   402				tr_dir, DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
   403	
   404		if (desc) {
   405			reg = readl(FLINTDMACR(flctl));
   406			reg |= DREQ0EN;
   407			writel(reg, FLINTDMACR(flctl));
   408	
   409			desc->callback = flctl_dma_complete;
   410			desc->callback_param = flctl;
   411			cookie = dmaengine_submit(desc);
   412			if (dma_submit_error(cookie)) {
   413				ret = dma_submit_error(cookie);
   414				dev_warn(&flctl->pdev->dev,
   415					 "DMA submit failed, falling back to PIO\n");
   416				goto out;
   417			}
   418	
   419			dma_async_issue_pending(chan);
   420		} else {
   421			/* DMA failed, fall back to PIO */
   422			flctl_release_dma(flctl);
   423			dev_warn(&flctl->pdev->dev,
   424				 "DMA failed, falling back to PIO\n");
   425			ret = -EIO;
   426			goto out;
   427		}
   428	
   429		time_left =
   430		wait_for_completion_timeout(&flctl->dma_complete,
   431					msecs_to_jiffies(3000));
   432	
 > 433		if (time_left == 0) {
   434			dmaengine_terminate_all(chan);
   435			dev_err(&flctl->pdev->dev, "wait_for_completion_timeout\n");
   436			ret = -ETIMEDOUT;
   437		}
   438	
   439	out:
   440		reg = readl(FLINTDMACR(flctl));
   441		reg &= ~DREQ0EN;
   442		writel(reg, FLINTDMACR(flctl));
   443	
   444		dma_unmap_single(chan->device->dev, dma_addr, len, dir);
   445	
   446		/* ret > 0 is success */
   447		return ret;
   448	}
   449	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp



More information about the linux-mtd mailing list