[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