]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests/bpf: Make res_spin_lock AA test condition stronger
authorKumar Kartikeya Dwivedi <memxor@gmail.com>
Thu, 10 Apr 2025 17:00:23 +0000 (10:00 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 10 Apr 2025 19:45:37 +0000 (12:45 -0700)
Let's make sure that we see a EDEADLK and ETIMEDOUT whenever checking
for the AA tests (in case of simple AA and AA after exhausting 31
entries).

Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20250410170023.2670683-1-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/progs/res_spin_lock.c

index b33385dfbd3503e23e62d1a69564e88585453e83..22c4fb8b9266da16c621243154d2f84129f16a60 100644 (file)
@@ -38,13 +38,14 @@ int res_spin_lock_test(struct __sk_buff *ctx)
        r = bpf_res_spin_lock(&elem1->lock);
        if (r)
                return r;
-       if (!bpf_res_spin_lock(&elem2->lock)) {
+       r = bpf_res_spin_lock(&elem2->lock);
+       if (!r) {
                bpf_res_spin_unlock(&elem2->lock);
                bpf_res_spin_unlock(&elem1->lock);
                return -1;
        }
        bpf_res_spin_unlock(&elem1->lock);
-       return 0;
+       return r != -EDEADLK;
 }
 
 SEC("tc")
@@ -124,12 +125,15 @@ int res_spin_lock_test_held_lock_max(struct __sk_buff *ctx)
        /* Trigger AA, after exhausting entries in the held lock table. This
         * time, only the timeout can save us, as AA detection won't succeed.
         */
-       if (!bpf_res_spin_lock(locks[34])) {
+       ret = bpf_res_spin_lock(locks[34]);
+       if (!ret) {
                bpf_res_spin_unlock(locks[34]);
                ret = 1;
                goto end;
        }
 
+       ret = ret != -ETIMEDOUT ? 2 : 0;
+
 end:
        for (i = i - 1; i >= 0; i--)
                bpf_res_spin_unlock(locks[i]);