Re: [PATCH 2/2] dma-buf/dma-fence: Order setting of the signaled-bit properly

From: kernel test robot

Date: Mon Oct 26 2026 - 03:50:47 EST


Hi Philipp,

kernel test robot noticed the following build errors:

[auto build test ERROR on 1ecab8b0bad393750c60cc3819ce9c256595463c]

url: https://github.com/intel-lab-lkp/linux/commits/Philipp-Stanner/asm-generic-bitops-Add-set_bit_release/20261021-115512
base: 1ecab8b0bad393750c60cc3819ce9c256595463c
patch link: https://lore.kernel.org/r/20261021095512.1345191-4-phasta%40kernel.org
patch subject: [PATCH 2/2] dma-buf/dma-fence: Order setting of the signaled-bit properly
config: sparc64-allmodconfig (https://download.01.org/0day-ci/archive/20261026/202610261518.t3m9Kwds-lkp@xxxxxxxxx/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261026/202610261518.t3m9Kwds-lkp@xxxxxxxxx/reproduce)

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 <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202610261518.t3m9Kwds-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

>> drivers/dma-buf/dma-fence.c:393:2: error: call to undeclared function 'set_bit_release'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
393 | set_bit_release(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags);
| ^
1 error generated.


vim +/set_bit_release +393 drivers/dma-buf/dma-fence.c

337
338 /**
339 * dma_fence_signal_timestamp_locked - signal completion of a fence
340 * @fence: the fence to signal
341 * @timestamp: fence signal timestamp in kernel's CLOCK_MONOTONIC time domain
342 *
343 * Signal completion for software callbacks on a fence, this will unblock
344 * dma_fence_wait() calls and run all the callbacks added with
345 * dma_fence_add_callback(). Can be called multiple times, but since a fence
346 * can only go from the unsignaled to the signaled state and not back, it will
347 * only be effective the first time. Set the timestamp provided as the fence
348 * signal timestamp.
349 *
350 * Unlike dma_fence_signal_timestamp(), this function must be called with
351 * &dma_fence.lock held.
352 */
353 void dma_fence_signal_timestamp_locked(struct dma_fence *fence,
354 ktime_t timestamp)
355 {
356 const struct dma_fence_ops *ops;
357 struct dma_fence_cb *cur, *tmp;
358 struct list_head cb_list;
359
360 dma_fence_assert_held(fence);
361
362 if (unlikely(dma_fence_test_signaled_flag(fence)))
363 return;
364
365 trace_dma_fence_signaled(fence);
366
367 /*
368 * When neither a release nor a wait operation is specified set the ops
369 * pointer to NULL to allow the fence structure to become independent
370 * from who originally issued it.
371 */
372 ops = rcu_dereference_protected(fence->ops, true);
373 if (!ops->release && !ops->wait)
374 RCU_INIT_POINTER(fence->ops, NULL);
375
376 /* Stash the cb_list before replacing it with the timestamp */
377 list_replace(&fence->cb_list, &cb_list);
378
379 fence->timestamp = timestamp;
380 set_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT, &fence->flags);
381
382 list_for_each_entry_safe(cur, tmp, &cb_list, node) {
383 INIT_LIST_HEAD(&cur->node);
384 cur->func(fence, cur);
385 }
386
387 /*
388 * This orders the signaled-state with the test_bit_acquire() in
389 * dma_fence_test_signaled_flag(). This ensures that functions like
390 * dma_fence_is_signaled() can only ever return true once signaling is
391 * completed (i.e., after the callbacks above ran).
392 */
> 393 set_bit_release(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags);
394 }
395 EXPORT_SYMBOL(dma_fence_signal_timestamp_locked);
396

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