selftests/bpf: Fix compiler warnings reported in -O2 mode
authorAndrii Nakryiko <andrii@kernel.org>
Fri, 6 Oct 2023 17:57:42 +0000 (10:57 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 6 Oct 2023 18:17:28 +0000 (20:17 +0200)
Fix a bunch of potentially unitialized variable usage warnings that are
reported by GCC in -O2 mode. Also silence overzealous stringop-truncation
class of warnings.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/bpf/20231006175744.3136675-1-andrii@kernel.org
15 files changed:
tools/testing/selftests/bpf/Makefile
tools/testing/selftests/bpf/map_tests/map_in_map_batch_ops.c
tools/testing/selftests/bpf/prog_tests/bloom_filter_map.c
tools/testing/selftests/bpf/prog_tests/connect_ping.c
tools/testing/selftests/bpf/prog_tests/linked_list.c
tools/testing/selftests/bpf/prog_tests/lwt_helpers.h
tools/testing/selftests/bpf/prog_tests/queue_stack_map.c
tools/testing/selftests/bpf/prog_tests/sockmap_basic.c
tools/testing/selftests/bpf/prog_tests/sockmap_helpers.h
tools/testing/selftests/bpf/prog_tests/sockmap_listen.c
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
tools/testing/selftests/bpf/test_loader.c
tools/testing/selftests/bpf/xdp_features.c
tools/testing/selftests/bpf/xdp_hw_metadata.c
tools/testing/selftests/bpf/xskxceiver.c

index 12a60521d624534ad091c3e9e8f3bb0981556a88..99f66bdf76988d58a47f294c497cfb7f2b5afcbd 100644 (file)
@@ -27,7 +27,9 @@ endif
 BPF_GCC                ?= $(shell command -v bpf-gcc;)
 SAN_CFLAGS     ?=
 SAN_LDFLAGS    ?= $(SAN_CFLAGS)
-CFLAGS += -g -O0 -rdynamic -Wall -Werror $(GENFLAGS) $(SAN_CFLAGS)     \
+CFLAGS += -g -O0 -rdynamic                                             \
+         -Wall -Werror                                                 \
+         $(GENFLAGS) $(SAN_CFLAGS)                                     \
          -I$(CURDIR) -I$(INCLUDE_DIR) -I$(GENDIR) -I$(LIBDIR)          \
          -I$(TOOLSINCDIR) -I$(APIDIR) -I$(OUTPUT)
 LDFLAGS += $(SAN_LDFLAGS)
index 16f1671e4bde54f582d7f5c53c33c47559cb5cb1..66191ae9863c1d4589ecf367cc9bfa4eac54399d 100644 (file)
@@ -33,11 +33,11 @@ static void create_inner_maps(enum bpf_map_type map_type,
 {
        int map_fd, map_index, ret;
        __u32 map_key = 0, map_id;
-       char map_name[15];
+       char map_name[16];
 
        for (map_index = 0; map_index < OUTER_MAP_ENTRIES; map_index++) {
                memset(map_name, 0, sizeof(map_name));
-               sprintf(map_name, "inner_map_fd_%d", map_index);
+               snprintf(map_name, sizeof(map_name), "inner_map_fd_%d", map_index);
                map_fd = bpf_map_create(map_type, map_name, sizeof(__u32),
                                        sizeof(__u32), 1, NULL);
                CHECK(map_fd < 0,
index d2d9e965eba59fb267f257b5b5089ac453740787..053f4d6da77a48f84d86263358c5c329bb6f0beb 100644 (file)
@@ -193,8 +193,8 @@ error:
 
 void test_bloom_filter_map(void)
 {
-       __u32 *rand_vals, nr_rand_vals;
-       struct bloom_filter_map *skel;
+       __u32 *rand_vals = NULL, nr_rand_vals = 0;
+       struct bloom_filter_map *skel = NULL;
        int err;
 
        test_fail_cases();
index 289218c2216c38cfee6282c8071456c4713a8fdc..40fe571f2fe7c31dd6c758694fafa1e19257d843 100644 (file)
@@ -28,9 +28,9 @@ static void subtest(int cgroup_fd, struct connect_ping *skel,
                .sin6_family = AF_INET6,
                .sin6_addr = IN6ADDR_LOOPBACK_INIT,
        };
-       struct sockaddr *sa;
+       struct sockaddr *sa = NULL;
        socklen_t sa_len;
-       int protocol;
+       int protocol = -1;
        int sock_fd;
 
        switch (family) {
index db3bf6bbe01af95608641ea6493203afae8d3439..69dc31383b78122c5504969c18a164e61e952143 100644 (file)
@@ -268,7 +268,7 @@ end:
 
 static void list_and_rb_node_same_struct(bool refcount_field)
 {
-       int bpf_rb_node_btf_id, bpf_refcount_btf_id, foo_btf_id;
+       int bpf_rb_node_btf_id, bpf_refcount_btf_id = 0, foo_btf_id;
        struct btf *btf;
        int id, err;
 
index 61333f2a03f91f2f1b64bdd38d879fb3d48b80c1..e9190574e79f39fe50a2d2d512883fb94d3987c9 100644 (file)
@@ -49,7 +49,8 @@ static int open_tuntap(const char *dev_name, bool need_mac)
                return -1;
 
        ifr.ifr_flags = IFF_NO_PI | (need_mac ? IFF_TAP : IFF_TUN);
-       memcpy(ifr.ifr_name, dev_name, IFNAMSIZ);
+       strncpy(ifr.ifr_name, dev_name, IFNAMSIZ - 1);
+       ifr.ifr_name[IFNAMSIZ - 1] = '\0';
 
        err = ioctl(fd, TUNSETIFF, &ifr);
        if (!ASSERT_OK(err, "ioctl(TUNSETIFF)")) {
index 722c5f2a77768e991a938974e3455842189cbaea..a043af9cd6d999402332d2605f03404724c9269e 100644 (file)
@@ -14,7 +14,7 @@ static void test_queue_stack_map_by_type(int type)
        int i, err, prog_fd, map_in_fd, map_out_fd;
        char file[32], buf[128];
        struct bpf_object *obj;
-       struct iphdr iph;
+       struct iphdr iph = {};
        LIBBPF_OPTS(bpf_test_run_opts, topts,
                .data_in = &pkt_v4,
                .data_size_in = sizeof(pkt_v4),
index 064cc5e8d9ade372415b852712270e84847f80ff..2535d0653cc84dc44f0610d67b89fac974332331 100644 (file)
@@ -359,7 +359,7 @@ out:
 static void test_sockmap_skb_verdict_shutdown(void)
 {
        struct epoll_event ev, events[MAX_EVENTS];
-       int n, err, map, verdict, s, c1, p1;
+       int n, err, map, verdict, s, c1 = -1, p1 = -1;
        struct test_sockmap_pass_prog *skel;
        int epollfd;
        int zero = 0;
@@ -414,9 +414,9 @@ out:
 static void test_sockmap_skb_verdict_fionread(bool pass_prog)
 {
        int expected, zero = 0, sent, recvd, avail;
-       int err, map, verdict, s, c0, c1, p0, p1;
-       struct test_sockmap_pass_prog *pass;
-       struct test_sockmap_drop_prog *drop;
+       int err, map, verdict, s, c0 = -1, c1 = -1, p0 = -1, p1 = -1;
+       struct test_sockmap_pass_prog *pass = NULL;
+       struct test_sockmap_drop_prog *drop = NULL;
        char buf[256] = "0123456789";
 
        if (pass_prog) {
index 36d829a65aa44a70991e124a485ae5e4160f0e7d..e880f97bc44d35d1609356129f6b31b268eb435e 100644 (file)
@@ -378,7 +378,7 @@ static inline int enable_reuseport(int s, int progfd)
 static inline int socket_loopback_reuseport(int family, int sotype, int progfd)
 {
        struct sockaddr_storage addr;
-       socklen_t len;
+       socklen_t len = 0;
        int err, s;
 
        init_addr_loopback(family, &addr, &len);
index 8df8cbb447f10f21dd8f2a4f61637668c38f40db..e08e590b2cf8b6f83be7656ae6c0a4f77ca62544 100644 (file)
@@ -73,7 +73,7 @@ static void test_insert_bound(struct test_sockmap_listen *skel __always_unused,
                              int family, int sotype, int mapfd)
 {
        struct sockaddr_storage addr;
-       socklen_t len;
+       socklen_t len = 0;
        u32 key = 0;
        u64 value;
        int err, s;
@@ -871,7 +871,7 @@ static void test_msg_redir_to_listening(struct test_sockmap_listen *skel,
 
 static void redir_partial(int family, int sotype, int sock_map, int parser_map)
 {
-       int s, c0, c1, p0, p1;
+       int s, c0 = -1, c1 = -1, p0 = -1, p1 = -1;
        int err, n, key, value;
        char buf[] = "abc";
 
index 626c461fa34d8a5a527a120fdde6a800010da0c3..4439ba9392f8e6fd367089c813b3fce89199e6e6 100644 (file)
@@ -226,7 +226,7 @@ static int verify_xsk_metadata(struct xsk *xsk)
        __u64 comp_addr;
        void *data;
        __u64 addr;
-       __u32 idx;
+       __u32 idx = 0;
        int ret;
 
        ret = recvfrom(xsk_socket__fd(xsk->socket), NULL, 0, MSG_DONTWAIT, NULL, NULL);
index b4edd845493451c224940287e3c19d6c64b1c2fb..37ffa57f28a192c386dd0a73790ffbf29755c0f9 100644 (file)
@@ -69,7 +69,7 @@ static int tester_init(struct test_loader *tester)
 {
        if (!tester->log_buf) {
                tester->log_buf_sz = TEST_LOADER_LOG_BUF_SZ;
-               tester->log_buf = malloc(tester->log_buf_sz);
+               tester->log_buf = calloc(tester->log_buf_sz, 1);
                if (!ASSERT_OK_PTR(tester->log_buf, "tester_log_buf"))
                        return -ENOMEM;
        }
@@ -538,7 +538,7 @@ void run_subtest(struct test_loader *tester,
                 bool unpriv)
 {
        struct test_subspec *subspec = unpriv ? &spec->unpriv : &spec->priv;
-       struct bpf_program *tprog, *tprog_iter;
+       struct bpf_program *tprog = NULL, *tprog_iter;
        struct test_spec *spec_iter;
        struct cap_state caps = {};
        struct bpf_object *tobj;
index b449788fbd39c90b96adecd150eb1f1b9962d9b3..595c79141cf327c32cc01dcf49b040de7ffce3d3 100644 (file)
@@ -360,9 +360,9 @@ static int recv_msg(int sockfd, void *buf, size_t bufsize, void *val,
 static int dut_run(struct xdp_features *skel)
 {
        int flags = XDP_FLAGS_UPDATE_IF_NOEXIST | XDP_FLAGS_DRV_MODE;
-       int state, err, *sockfd, ctrl_sockfd, echo_sockfd;
+       int state, err = 0, *sockfd, ctrl_sockfd, echo_sockfd;
        struct sockaddr_storage ctrl_addr;
-       pthread_t dut_thread;
+       pthread_t dut_thread = 0;
        socklen_t addrlen;
 
        sockfd = start_reuseport_server(AF_INET6, SOCK_STREAM, NULL,
index 613321eb84c1901b56350e8db4ae910546fb1117..17c98013879624928c6a442258f425054240e3be 100644 (file)
@@ -234,7 +234,7 @@ static int verify_metadata(struct xsk *rx_xsk, int rxq, int server_fd, clockid_t
        struct pollfd fds[rxq + 1];
        __u64 comp_addr;
        __u64 addr;
-       __u32 idx;
+       __u32 idx = 0;
        int ret;
        int i;
 
index 837e0ffbdc474d3852f1e66d240cd14d0ec4d281..591ca9637b23e883cacea7293070a546824c2d81 100644 (file)
@@ -1049,7 +1049,7 @@ static int __receive_pkts(struct test_spec *test, struct xsk_socket_info *xsk)
        struct xsk_umem_info *umem = xsk->umem;
        struct pollfd fds = { };
        struct pkt *pkt;
-       u64 first_addr;
+       u64 first_addr = 0;
        int ret;
 
        fds.fd = xsk_socket__fd(xsk->xsk);