[isilence:rw-dmabuf-v5 1/16] drivers/dma-buf/dma-buf-io.c:169 dma_buf_io_create_map() warn: inconsistent returns 'dmabuf->resv'.

kernel test robot <[email protected]> Mon, 03 Aug 2026 06:26:10 +0800
Newsgroups dev.linux.lists.oe-kbuild
Message-ID <[email protected]>
BCC: [email protected]
CC: [email protected]
TO: Pavel Begunkov <[email protected]>

tree:   https://github.com/isilence/linux rw-dmabuf-v5
head:   71c75106fd3c8852b3856e472b586db82e480f7b
commit: ff5dccf71e8c03d62797352c4bb5fbb7c6c759c8 [1/16] dma-buf: introduce initial file I/O infrastructure
:::::: branch date: 31 hours ago
:::::: commit date: 31 hours ago
config: i386-randconfig-141-20260803 (https://download.01.org/0day-ci/archive/20260803/[email protected]/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
smatch: v0.5.0-9187-g5189e3fb

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Reported-by: Dan Carpenter <[email protected]>
| Closes: https://lore.kernel.org/r/[email protected]/

smatch warnings:
drivers/dma-buf/dma-buf-io.c:169 dma_buf_io_create_map() warn: inconsistent returns 'dmabuf->resv'.

vim +169 drivers/dma-buf/dma-buf-io.c

ff5dccf71e8c03 Pavel Begunkov 2026-04-19  118  
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  119  struct dma_buf_io_map *dma_buf_io_create_map(struct dma_buf_io_ctx *ctx)
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  120  {
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  121  	struct dma_buf *dmabuf = ctx->dmabuf;
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  122  	struct dma_buf_io_map *map;
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  123  	long ret;
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  124  
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  125  retry:
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  126  	/*
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  127  	 * ->dmabuf_map() will be calling dma_buf_map_attachment(), for which
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  128  	 * we'll need to wait for fences. Do a bit nicer and try to wait
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  129  	 * without the resv lock first.
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  130  	 */
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  131  	ret = dma_resv_wait_timeout(dmabuf->resv, DMA_RESV_USAGE_KERNEL,
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  132  				    true, MAX_SCHEDULE_TIMEOUT);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  133  	if (!ret)
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  134  		ret = -EAGAIN;
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  135  	if (ret < 0)
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  136  		return ERR_PTR(ret);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  137  
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  138  	ret = dma_resv_lock_interruptible(dmabuf->resv, NULL);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  139  	if (ret)
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  140  		return ERR_PTR(ret);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  141  
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  142  	map = dma_buf_io_get_map(ctx);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  143  	if (map) {
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  144  		ret = 0;
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  145  		goto out;
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  146  	}
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  147  
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  148  	if (dma_resv_wait_timeout(dmabuf->resv, DMA_RESV_USAGE_KERNEL,
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  149  				  true, 0) < 0) {
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  150  		dma_resv_unlock(dmabuf->resv);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  151  		goto retry;
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  152  	}
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  153  
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  154  	map = ctx->dev_ops->map(ctx);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  155  	if (IS_ERR(map)) {
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  156  		ret = PTR_ERR(map);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  157  		goto out;
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  158  	}
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  159  
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  160  	if (WARN_ON_ONCE(!map->seg_shift))
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  161  		return ERR_PTR(-EFAULT);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  162  
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  163  	percpu_ref_get(&map->refs);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  164  	rcu_assign_pointer(ctx->map, map);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  165  out:
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  166  	dma_resv_unlock(dmabuf->resv);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  167  	if (ret < 0)
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  168  		return ERR_PTR(ret);
ff5dccf71e8c03 Pavel Begunkov 2026-04-19 @169  	return map;
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  170  }
ff5dccf71e8c03 Pavel Begunkov 2026-04-19  171  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki