On Tue, Oct 03, 2023 at 05:17:48PM -0700, Andrii Nakryiko wrote: > 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@xxxxxxxxxx> there's now small conflict in xskxceiver.c change on latest bpf-next/master, but anyway looks good Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx> jirka > --- > tools/testing/selftests/bpf/Makefile | 4 +++- > .../selftests/bpf/map_tests/map_in_map_batch_ops.c | 4 ++-- > tools/testing/selftests/bpf/prog_tests/bloom_filter_map.c | 4 ++-- > tools/testing/selftests/bpf/prog_tests/connect_ping.c | 4 ++-- > tools/testing/selftests/bpf/prog_tests/linked_list.c | 2 +- > tools/testing/selftests/bpf/prog_tests/lwt_helpers.h | 3 ++- > tools/testing/selftests/bpf/prog_tests/queue_stack_map.c | 2 +- > tools/testing/selftests/bpf/prog_tests/sockmap_basic.c | 8 ++++---- > tools/testing/selftests/bpf/prog_tests/sockmap_helpers.h | 2 +- > tools/testing/selftests/bpf/prog_tests/sockmap_listen.c | 4 ++-- > tools/testing/selftests/bpf/prog_tests/xdp_metadata.c | 2 +- > tools/testing/selftests/bpf/test_loader.c | 4 ++-- > tools/testing/selftests/bpf/xdp_features.c | 4 ++-- > tools/testing/selftests/bpf/xdp_hw_metadata.c | 2 +- > tools/testing/selftests/bpf/xskxceiver.c | 2 +- > 15 files changed, 27 insertions(+), 24 deletions(-) > > diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile > index 47365161b6fc..a25e262dbc69 100644 > --- a/tools/testing/selftests/bpf/Makefile > +++ b/tools/testing/selftests/bpf/Makefile > @@ -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) > diff --git a/tools/testing/selftests/bpf/map_tests/map_in_map_batch_ops.c b/tools/testing/selftests/bpf/map_tests/map_in_map_batch_ops.c > index 16f1671e4bde..66191ae9863c 100644 > --- a/tools/testing/selftests/bpf/map_tests/map_in_map_batch_ops.c > +++ b/tools/testing/selftests/bpf/map_tests/map_in_map_batch_ops.c > @@ -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, > diff --git a/tools/testing/selftests/bpf/prog_tests/bloom_filter_map.c b/tools/testing/selftests/bpf/prog_tests/bloom_filter_map.c > index d2d9e965eba5..053f4d6da77a 100644 > --- a/tools/testing/selftests/bpf/prog_tests/bloom_filter_map.c > +++ b/tools/testing/selftests/bpf/prog_tests/bloom_filter_map.c > @@ -193,8 +193,8 @@ static int setup_progs(struct bloom_filter_map **out_skel, __u32 **out_rand_vals > > 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(); > diff --git a/tools/testing/selftests/bpf/prog_tests/connect_ping.c b/tools/testing/selftests/bpf/prog_tests/connect_ping.c > index 289218c2216c..40fe571f2fe7 100644 > --- a/tools/testing/selftests/bpf/prog_tests/connect_ping.c > +++ b/tools/testing/selftests/bpf/prog_tests/connect_ping.c > @@ -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) { > diff --git a/tools/testing/selftests/bpf/prog_tests/linked_list.c b/tools/testing/selftests/bpf/prog_tests/linked_list.c > index db3bf6bbe01a..69dc31383b78 100644 > --- a/tools/testing/selftests/bpf/prog_tests/linked_list.c > +++ b/tools/testing/selftests/bpf/prog_tests/linked_list.c > @@ -268,7 +268,7 @@ static struct btf *init_btf(void) > > 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; > > diff --git a/tools/testing/selftests/bpf/prog_tests/lwt_helpers.h b/tools/testing/selftests/bpf/prog_tests/lwt_helpers.h > index 61333f2a03f9..e9190574e79f 100644 > --- a/tools/testing/selftests/bpf/prog_tests/lwt_helpers.h > +++ b/tools/testing/selftests/bpf/prog_tests/lwt_helpers.h > @@ -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)")) { > diff --git a/tools/testing/selftests/bpf/prog_tests/queue_stack_map.c b/tools/testing/selftests/bpf/prog_tests/queue_stack_map.c > index 722c5f2a7776..a043af9cd6d9 100644 > --- a/tools/testing/selftests/bpf/prog_tests/queue_stack_map.c > +++ b/tools/testing/selftests/bpf/prog_tests/queue_stack_map.c > @@ -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), > diff --git a/tools/testing/selftests/bpf/prog_tests/sockmap_basic.c b/tools/testing/selftests/bpf/prog_tests/sockmap_basic.c > index 064cc5e8d9ad..2535d0653cc8 100644 > --- a/tools/testing/selftests/bpf/prog_tests/sockmap_basic.c > +++ b/tools/testing/selftests/bpf/prog_tests/sockmap_basic.c > @@ -359,7 +359,7 @@ static void test_sockmap_progs_query(enum bpf_attach_type attach_type) > 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 @@ static void test_sockmap_skb_verdict_shutdown(void) > 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) { > diff --git a/tools/testing/selftests/bpf/prog_tests/sockmap_helpers.h b/tools/testing/selftests/bpf/prog_tests/sockmap_helpers.h > index 36d829a65aa4..e880f97bc44d 100644 > --- a/tools/testing/selftests/bpf/prog_tests/sockmap_helpers.h > +++ b/tools/testing/selftests/bpf/prog_tests/sockmap_helpers.h > @@ -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); > diff --git a/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c b/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c > index 8df8cbb447f1..e08e590b2cf8 100644 > --- a/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c > +++ b/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c > @@ -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"; > > diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_metadata.c b/tools/testing/selftests/bpf/prog_tests/xdp_metadata.c > index 626c461fa34d..4439ba9392f8 100644 > --- a/tools/testing/selftests/bpf/prog_tests/xdp_metadata.c > +++ b/tools/testing/selftests/bpf/prog_tests/xdp_metadata.c > @@ -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); > diff --git a/tools/testing/selftests/bpf/test_loader.c b/tools/testing/selftests/bpf/test_loader.c > index b4edd8454934..37ffa57f28a1 100644 > --- a/tools/testing/selftests/bpf/test_loader.c > +++ b/tools/testing/selftests/bpf/test_loader.c > @@ -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; > diff --git a/tools/testing/selftests/bpf/xdp_features.c b/tools/testing/selftests/bpf/xdp_features.c > index b449788fbd39..595c79141cf3 100644 > --- a/tools/testing/selftests/bpf/xdp_features.c > +++ b/tools/testing/selftests/bpf/xdp_features.c > @@ -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, > diff --git a/tools/testing/selftests/bpf/xdp_hw_metadata.c b/tools/testing/selftests/bpf/xdp_hw_metadata.c > index 613321eb84c1..17c980138796 100644 > --- a/tools/testing/selftests/bpf/xdp_hw_metadata.c > +++ b/tools/testing/selftests/bpf/xdp_hw_metadata.c > @@ -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; > > diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c > index 43e0a5796929..b0ee1307a63b 100644 > --- a/tools/testing/selftests/bpf/xskxceiver.c > +++ b/tools/testing/selftests/bpf/xskxceiver.c > @@ -1023,7 +1023,7 @@ static int receive_pkts(struct test_spec *test, struct pollfd *fds) > pkt = pkt_stream_get_next_rx_pkt(pkt_stream, &pkts_sent); > while (pkt) { > u32 frags_processed = 0, nb_frags = 0, pkt_len = 0; > - u64 first_addr; > + u64 first_addr = 0; > > ret = gettimeofday(&tv_now, NULL); > if (ret) > -- > 2.34.1 > >