Skip to content

Commit 8ebc89b

Browse files
iii-iKernel Patches Daemon
authored andcommitted
selftests/bpf: Fix "expression result unused" warnings with icecc
icecc is a compiler wrapper that distributes compile jobs over a build farm [1]. It works by sending toolchain binaries and preprocessed source code to remote machines. Unfortunately using it with BPF selftests causes build failures due to a clang bug [2]. The problem is that clang suppresses the -Wunused-value warning if the unused expression comes from a macro expansion. Since icecc compiles preprocessed source code, this information is not available. This leads to -Wunused-value false positives. obj_new_no_struct() and obj_new_acq() use the bpf_obj_new() macro and discard the result. arena_spin_lock_slowpath() uses two macros that produce values and ignores the results. Add (void) casts to explicitly indicate that this is intentional and suppress the warning. An alternative solution is to change the macros to not produce values. This would work today for the arena_spin_lock_slowpath() issue, but in the future there may appear users who need them. Another potential solution is to replace these macros with functions. Unfortunately this would not work, because these macros work with unknown types and control flow. [1] https://github.com/icecc/icecream [2] llvm/llvm-project#142614 Signed-off-by: Ilya Leoshkevich <[email protected]>
1 parent 27199db commit 8ebc89b

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

tools/testing/selftests/bpf/progs/bpf_arena_spin_lock.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ int arena_spin_lock_slowpath(arena_spinlock_t __arena __arg_arena *lock, u32 val
302302
* barriers.
303303
*/
304304
if (val & _Q_LOCKED_MASK)
305-
smp_cond_load_acquire_label(&lock->locked, !VAL, release_err);
305+
(void)smp_cond_load_acquire_label(&lock->locked, !VAL, release_err);
306306

307307
/*
308308
* take ownership and clear the pending bit.
@@ -380,7 +380,7 @@ int arena_spin_lock_slowpath(arena_spinlock_t __arena __arg_arena *lock, u32 val
380380
/* Link @node into the waitqueue. */
381381
WRITE_ONCE(prev->next, node);
382382

383-
arch_mcs_spin_lock_contended_label(&node->locked, release_node_err);
383+
(void)arch_mcs_spin_lock_contended_label(&node->locked, release_node_err);
384384

385385
/*
386386
* While waiting for the MCS lock, the next pointer may have

tools/testing/selftests/bpf/progs/linked_list_fail.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,7 @@ int obj_new_no_composite(void *ctx)
226226
SEC("?tc")
227227
int obj_new_no_struct(void *ctx)
228228
{
229-
230-
bpf_obj_new(union { int data; unsigned udata; });
229+
(void)bpf_obj_new(union { int data; unsigned udata; });
231230
return 0;
232231
}
233232

@@ -252,7 +251,7 @@ int new_null_ret(void *ctx)
252251
SEC("?tc")
253252
int obj_new_acq(void *ctx)
254253
{
255-
bpf_obj_new(struct foo);
254+
(void)bpf_obj_new(struct foo);
256255
return 0;
257256
}
258257

0 commit comments

Comments
 (0)