Hi Paul, kernel test robot noticed the following build warnings: [auto build test WARNING on bpf-next/master] url: https://github.com/intel-lab-lkp/linux/commits/Paul-Chaignon/bpf-Refactor-cleanup-of-bpf_prog_test_run_skb/20250904-201515 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master patch link: https://lore.kernel.org/r/6fda7c7fd57e6134ff70d12b622c9c7c3cf0b226.1756983952.git.paul.chaignon%40gmail.com patch subject: [PATCH bpf-next 1/4] bpf: Refactor cleanup of bpf_prog_test_run_skb config: i386-buildonly-randconfig-006-20250905 (https://download.01.org/0day-ci/archive/20250905/202509052000.sL96WwEb-lkp@xxxxxxxxx/config) compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250905/202509052000.sL96WwEb-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202509052000.sL96WwEb-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): >> net/bpf/test_run.c:1011:6: warning: variable 'sk' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized] 1011 | if (IS_ERR(ctx)) { | ^~~~~~~~~~~ net/bpf/test_run.c:1142:6: note: uninitialized use occurs here 1142 | if (sk) | ^~ net/bpf/test_run.c:1011:2: note: remove the 'if' if its condition is always false 1011 | if (IS_ERR(ctx)) { | ^~~~~~~~~~~~~~~~~~ 1012 | ret = PTR_ERR(ctx); | ~~~~~~~~~~~~~~~~~~~ 1013 | goto out; | ~~~~~~~~~ 1014 | } | ~ net/bpf/test_run.c:996:17: note: initialize the variable 'sk' to silence this warning 996 | struct sock *sk; | ^ | = NULL >> net/bpf/test_run.c:1032:6: warning: variable 'skb' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized] 1032 | if (!sk) { | ^~~ net/bpf/test_run.c:1140:12: note: uninitialized use occurs here 1140 | kfree_skb(skb); | ^~~ net/bpf/test_run.c:1032:2: note: remove the 'if' if its condition is always false 1032 | if (!sk) { | ^~~~~~~~~~ 1033 | ret = -ENOMEM; | ~~~~~~~~~~~~~~ 1034 | goto out; | ~~~~~~~~~ 1035 | } | ~ net/bpf/test_run.c:1011:6: warning: variable 'skb' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized] 1011 | if (IS_ERR(ctx)) { | ^~~~~~~~~~~ net/bpf/test_run.c:1140:12: note: uninitialized use occurs here 1140 | kfree_skb(skb); | ^~~ net/bpf/test_run.c:1011:2: note: remove the 'if' if its condition is always false 1011 | if (IS_ERR(ctx)) { | ^~~~~~~~~~~~~~~~~~ 1012 | ret = PTR_ERR(ctx); | ~~~~~~~~~~~~~~~~~~~ 1013 | goto out; | ~~~~~~~~~ 1014 | } | ~ net/bpf/test_run.c:995:21: note: initialize the variable 'skb' to silence this warning 995 | struct sk_buff *skb; | ^ | = NULL 3 warnings generated. vim +1011 net/bpf/test_run.c 435b08ec0094ac Daniel Borkmann 2021-09-27 983 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 984 int bpf_prog_test_run_skb(struct bpf_prog *prog, const union bpf_attr *kattr, 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 985 union bpf_attr __user *uattr) 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 986 { 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 987 bool is_l2 = false, is_direct_pkt_access = false; 21594c44083c37 Dmitry Yakunin 2020-08-03 988 struct net *net = current->nsproxy->net_ns; 21594c44083c37 Dmitry Yakunin 2020-08-03 989 struct net_device *dev = net->loopback_dev; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 990 u32 size = kattr->test.data_size_in; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 991 u32 repeat = kattr->test.repeat; b0b9395d865e30 Stanislav Fomichev 2019-04-09 992 struct __sk_buff *ctx = NULL; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 993 u32 retval, duration; 6e6fddc7832353 Daniel Borkmann 2018-07-11 994 int hh_len = ETH_HLEN; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 995 struct sk_buff *skb; 2cb494a36c9827 Song Liu 2018-10-19 996 struct sock *sk; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 997 void *data; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 998 int ret; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 999 a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1000 if ((kattr->test.flags & ~BPF_F_TEST_SKB_CHECKSUM_COMPLETE) || a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1001 kattr->test.cpu || kattr->test.batch_size) 1b4d60ec162f82 Song Liu 2020-09-25 1002 return -EINVAL; 1b4d60ec162f82 Song Liu 2020-09-25 1003 be3d72a2896cb2 Lorenzo Bianconi 2022-01-21 1004 data = bpf_test_init(kattr, kattr->test.data_size_in, be3d72a2896cb2 Lorenzo Bianconi 2022-01-21 1005 size, NET_SKB_PAD + NET_IP_ALIGN, 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1006 SKB_DATA_ALIGN(sizeof(struct skb_shared_info))); 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1007 if (IS_ERR(data)) 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1008 return PTR_ERR(data); 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1009 b0b9395d865e30 Stanislav Fomichev 2019-04-09 1010 ctx = bpf_ctx_init(kattr, sizeof(struct __sk_buff)); b0b9395d865e30 Stanislav Fomichev 2019-04-09 @1011 if (IS_ERR(ctx)) { ed22fb43432aaa Paul Chaignon 2025-09-04 1012 ret = PTR_ERR(ctx); ed22fb43432aaa Paul Chaignon 2025-09-04 1013 goto out; b0b9395d865e30 Stanislav Fomichev 2019-04-09 1014 } b0b9395d865e30 Stanislav Fomichev 2019-04-09 1015 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1016 switch (prog->type) { 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1017 case BPF_PROG_TYPE_SCHED_CLS: 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1018 case BPF_PROG_TYPE_SCHED_ACT: 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1019 is_l2 = true; df561f6688fef7 Gustavo A. R. Silva 2020-08-23 1020 fallthrough; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1021 case BPF_PROG_TYPE_LWT_IN: 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1022 case BPF_PROG_TYPE_LWT_OUT: 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1023 case BPF_PROG_TYPE_LWT_XMIT: ed3e469d021cba Mahe Tardy 2024-11-25 1024 case BPF_PROG_TYPE_CGROUP_SKB: 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1025 is_direct_pkt_access = true; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1026 break; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1027 default: 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1028 break; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1029 } 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1030 435b08ec0094ac Daniel Borkmann 2021-09-27 1031 sk = sk_alloc(net, AF_UNSPEC, GFP_USER, &bpf_dummy_proto, 1); 2cb494a36c9827 Song Liu 2018-10-19 @1032 if (!sk) { ed22fb43432aaa Paul Chaignon 2025-09-04 1033 ret = -ENOMEM; ed22fb43432aaa Paul Chaignon 2025-09-04 1034 goto out; 2cb494a36c9827 Song Liu 2018-10-19 1035 } 2cb494a36c9827 Song Liu 2018-10-19 1036 sock_init_data(NULL, sk); 2cb494a36c9827 Song Liu 2018-10-19 1037 ce098da1497c6d Kees Cook 2022-12-07 1038 skb = slab_build_skb(data); 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1039 if (!skb) { ed22fb43432aaa Paul Chaignon 2025-09-04 1040 ret = -ENOMEM; ed22fb43432aaa Paul Chaignon 2025-09-04 1041 goto out; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1042 } 2cb494a36c9827 Song Liu 2018-10-19 1043 skb->sk = sk; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1044 586f8525979ad9 David Miller 2017-05-02 1045 skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN); 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1046 __skb_put(skb, size); a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1047 ed22fb43432aaa Paul Chaignon 2025-09-04 1048 data = NULL; /* data released via kfree_skb */ ed22fb43432aaa Paul Chaignon 2025-09-04 1049 21594c44083c37 Dmitry Yakunin 2020-08-03 1050 if (ctx && ctx->ifindex > 1) { 21594c44083c37 Dmitry Yakunin 2020-08-03 1051 dev = dev_get_by_index(net, ctx->ifindex); 21594c44083c37 Dmitry Yakunin 2020-08-03 1052 if (!dev) { 21594c44083c37 Dmitry Yakunin 2020-08-03 1053 ret = -ENODEV; 21594c44083c37 Dmitry Yakunin 2020-08-03 1054 goto out; 21594c44083c37 Dmitry Yakunin 2020-08-03 1055 } 21594c44083c37 Dmitry Yakunin 2020-08-03 1056 } 21594c44083c37 Dmitry Yakunin 2020-08-03 1057 skb->protocol = eth_type_trans(skb, dev); 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1058 skb_reset_network_header(skb); 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1059 fa5cb548ced61b Dmitry Yakunin 2020-08-03 1060 switch (skb->protocol) { fa5cb548ced61b Dmitry Yakunin 2020-08-03 1061 case htons(ETH_P_IP): fa5cb548ced61b Dmitry Yakunin 2020-08-03 1062 sk->sk_family = AF_INET; fa5cb548ced61b Dmitry Yakunin 2020-08-03 1063 if (sizeof(struct iphdr) <= skb_headlen(skb)) { fa5cb548ced61b Dmitry Yakunin 2020-08-03 1064 sk->sk_rcv_saddr = ip_hdr(skb)->saddr; fa5cb548ced61b Dmitry Yakunin 2020-08-03 1065 sk->sk_daddr = ip_hdr(skb)->daddr; fa5cb548ced61b Dmitry Yakunin 2020-08-03 1066 } fa5cb548ced61b Dmitry Yakunin 2020-08-03 1067 break; fa5cb548ced61b Dmitry Yakunin 2020-08-03 1068 #if IS_ENABLED(CONFIG_IPV6) fa5cb548ced61b Dmitry Yakunin 2020-08-03 1069 case htons(ETH_P_IPV6): fa5cb548ced61b Dmitry Yakunin 2020-08-03 1070 sk->sk_family = AF_INET6; fa5cb548ced61b Dmitry Yakunin 2020-08-03 1071 if (sizeof(struct ipv6hdr) <= skb_headlen(skb)) { fa5cb548ced61b Dmitry Yakunin 2020-08-03 1072 sk->sk_v6_rcv_saddr = ipv6_hdr(skb)->saddr; fa5cb548ced61b Dmitry Yakunin 2020-08-03 1073 sk->sk_v6_daddr = ipv6_hdr(skb)->daddr; fa5cb548ced61b Dmitry Yakunin 2020-08-03 1074 } fa5cb548ced61b Dmitry Yakunin 2020-08-03 1075 break; fa5cb548ced61b Dmitry Yakunin 2020-08-03 1076 #endif fa5cb548ced61b Dmitry Yakunin 2020-08-03 1077 default: fa5cb548ced61b Dmitry Yakunin 2020-08-03 1078 break; fa5cb548ced61b Dmitry Yakunin 2020-08-03 1079 } fa5cb548ced61b Dmitry Yakunin 2020-08-03 1080 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1081 if (is_l2) 6e6fddc7832353 Daniel Borkmann 2018-07-11 1082 __skb_push(skb, hh_len); 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1083 if (is_direct_pkt_access) 6aaae2b6c4330a Daniel Borkmann 2017-09-25 1084 bpf_compute_data_pointers(skb); a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1085 b0b9395d865e30 Stanislav Fomichev 2019-04-09 1086 ret = convert___skb_to_skb(skb, ctx); b0b9395d865e30 Stanislav Fomichev 2019-04-09 1087 if (ret) b0b9395d865e30 Stanislav Fomichev 2019-04-09 1088 goto out; a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1089 a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1090 if (kattr->test.flags & BPF_F_TEST_SKB_CHECKSUM_COMPLETE) { a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1091 const int off = skb_network_offset(skb); a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1092 int len = skb->len - off; a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1093 a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1094 skb->csum = skb_checksum(skb, off, len, 0); a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1095 skb->ip_summed = CHECKSUM_COMPLETE; a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1096 } a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1097 f23c4b3924d2e9 Björn Töpel 2019-12-13 1098 ret = bpf_test_run(prog, skb, repeat, &retval, &duration, false); b0b9395d865e30 Stanislav Fomichev 2019-04-09 1099 if (ret) b0b9395d865e30 Stanislav Fomichev 2019-04-09 1100 goto out; 6e6fddc7832353 Daniel Borkmann 2018-07-11 1101 if (!is_l2) { 6e6fddc7832353 Daniel Borkmann 2018-07-11 1102 if (skb_headroom(skb) < hh_len) { 6e6fddc7832353 Daniel Borkmann 2018-07-11 1103 int nhead = HH_DATA_ALIGN(hh_len - skb_headroom(skb)); 6e6fddc7832353 Daniel Borkmann 2018-07-11 1104 6e6fddc7832353 Daniel Borkmann 2018-07-11 1105 if (pskb_expand_head(skb, nhead, 0, GFP_USER)) { b0b9395d865e30 Stanislav Fomichev 2019-04-09 1106 ret = -ENOMEM; b0b9395d865e30 Stanislav Fomichev 2019-04-09 1107 goto out; 6e6fddc7832353 Daniel Borkmann 2018-07-11 1108 } 6e6fddc7832353 Daniel Borkmann 2018-07-11 1109 } 6e6fddc7832353 Daniel Borkmann 2018-07-11 1110 memset(__skb_push(skb, hh_len), 0, hh_len); 6e6fddc7832353 Daniel Borkmann 2018-07-11 1111 } a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1112 a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1113 if (kattr->test.flags & BPF_F_TEST_SKB_CHECKSUM_COMPLETE) { a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1114 const int off = skb_network_offset(skb); a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1115 int len = skb->len - off; a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1116 __wsum csum; a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1117 a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1118 csum = skb_checksum(skb, off, len, 0); a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1119 a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1120 if (csum_fold(skb->csum) != csum_fold(csum)) { a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1121 ret = -EBADMSG; a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1122 goto out; a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1123 } a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1124 } a3cfe84cca28f2 Vadim Fedorenko 2024-06-06 1125 b0b9395d865e30 Stanislav Fomichev 2019-04-09 1126 convert_skb_to___skb(skb, ctx); 6e6fddc7832353 Daniel Borkmann 2018-07-11 1127 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1128 size = skb->len; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1129 /* bpf program can never convert linear skb to non-linear */ 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1130 if (WARN_ON_ONCE(skb_is_nonlinear(skb))) 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1131 size = skb_headlen(skb); 7855e0db150ad8 Lorenzo Bianconi 2022-01-21 1132 ret = bpf_test_finish(kattr, uattr, skb->data, NULL, size, retval, 7855e0db150ad8 Lorenzo Bianconi 2022-01-21 1133 duration); b0b9395d865e30 Stanislav Fomichev 2019-04-09 1134 if (!ret) b0b9395d865e30 Stanislav Fomichev 2019-04-09 1135 ret = bpf_ctx_finish(kattr, uattr, ctx, b0b9395d865e30 Stanislav Fomichev 2019-04-09 1136 sizeof(struct __sk_buff)); b0b9395d865e30 Stanislav Fomichev 2019-04-09 1137 out: 21594c44083c37 Dmitry Yakunin 2020-08-03 1138 if (dev && dev != net->loopback_dev) 21594c44083c37 Dmitry Yakunin 2020-08-03 1139 dev_put(dev); 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1140 kfree_skb(skb); ed22fb43432aaa Paul Chaignon 2025-09-04 1141 kfree(data); ed22fb43432aaa Paul Chaignon 2025-09-04 1142 if (sk) 435b08ec0094ac Daniel Borkmann 2021-09-27 1143 sk_free(sk); b0b9395d865e30 Stanislav Fomichev 2019-04-09 1144 kfree(ctx); 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1145 return ret; 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1146 } 1cf1cae963c2e6 Alexei Starovoitov 2017-03-30 1147 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki