]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests/bpf: Fail unbound UDP on sockmap update
authorMichal Luczaj <mhal@rbox.co>
Tue, 7 Jul 2026 04:23:59 +0000 (06:23 +0200)
committerKumar Kartikeya Dwivedi <memxor@gmail.com>
Wed, 15 Jul 2026 08:34:15 +0000 (10:34 +0200)
sockmap now rejects unbound UDP sockets. Adjust test_maps. While at it,
check socket()'s return value.

This effectively reverts commit c39aa2159974 ("bpf, selftests: Fix
test_maps now that sockmap supports UDP").

Signed-off-by: Michal Luczaj <mhal@rbox.co>
Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com>
Link: https://lore.kernel.org/bpf/20260707-sockmap-lookup-udp-leak-v4-4-f878346f27ab@rbox.co
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
tools/testing/selftests/bpf/test_maps.c

index c32da7bd8be2761580c63493c45e0476bffd317e..6a2641ee7897547aca3b9d18ea7efd326727f15e 100644 (file)
@@ -759,16 +759,15 @@ static void test_sockmap(unsigned int tasks, void *data)
                goto out_sockmap;
        }
 
-       /* Test update with unsupported UDP socket */
+       /* Test update with unsupported unbound UDP socket */
        udp = socket(AF_INET, SOCK_DGRAM, 0);
-       i = 0;
-       err = bpf_map_update_elem(fd, &i, &udp, BPF_ANY);
-       if (err) {
-               printf("Failed socket update SOCK_DGRAM '%i:%i'\n",
-                      i, udp);
+       CHECK(udp < 0, "socket(AF_INET, SOCK_DGRAM)", "errno:%d\n", errno);
+       err = bpf_map_update_elem(fd, &(int){0}, &udp, BPF_ANY);
+       close(udp);
+       if (!err) {
+               printf("Unexpectedly succeeded unbound UDP update '0:%i'\n", udp);
                goto out_sockmap;
        }
-       close(udp);
 
        /* Test update without programs */
        for (i = 0; i < 6; i++) {