CC: kbuild-...@lists.01.org
BCC: l...@intel.com
In-Reply-To: <20220309105346.100053-2-t...@redhat.com>
References: <20220309105346.100053-2-t...@redhat.com>
TO: "Toke Høiland-Jørgensen" <t...@redhat.com>

Hi "Toke,

I love your patch! Perhaps something to improve:

[auto build test WARNING on bpf-next/master]

url:    
https://github.com/0day-ci/linux/commits/Toke-H-iland-J-rgensen/Add-support-for-transmitting-packets-using-XDP-in-bpf_prog_run/20220309-185524
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
:::::: branch date: 8 hours ago
:::::: commit date: 8 hours ago
config: i386-randconfig-m021 
(https://download.01.org/0day-ci/archive/20220310/202203100251.somwr7mi-...@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

smatch warnings:
net/bpf/test_run.c:1330 bpf_prog_test_run_xdp() error: uninitialized symbol 
'retval'.

vim +/retval +1330 net/bpf/test_run.c

47316f4a305367 Zvi Effron             2021-07-07  1203  
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1204  int 
bpf_prog_test_run_xdp(struct bpf_prog *prog, const union bpf_attr *kattr,
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1205                          
  union bpf_attr __user *uattr)
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1206  {
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1207          bool do_live = 
(kattr->test.flags & BPF_F_TEST_XDP_LIVE_FRAMES);
bc56c919fce782 Jesper Dangaard Brouer 2020-05-14  1208          u32 tailroom = 
SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1209          u32 batch_size 
= kattr->test.batch_size;
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1210          u32 size = 
kattr->test.data_size_in;
1c194998252469 Lorenzo Bianconi       2022-01-21  1211          u32 headroom = 
XDP_PACKET_HEADROOM;
1c194998252469 Lorenzo Bianconi       2022-01-21  1212          u32 retval, 
duration, max_data_sz;
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1213          u32 repeat = 
kattr->test.repeat;
65073a67331de3 Daniel Borkmann        2018-01-31  1214          struct 
netdev_rx_queue *rxqueue;
1c194998252469 Lorenzo Bianconi       2022-01-21  1215          struct 
skb_shared_info *sinfo;
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1216          struct xdp_buff 
xdp = {};
1c194998252469 Lorenzo Bianconi       2022-01-21  1217          int i, ret = 
-EINVAL;
47316f4a305367 Zvi Effron             2021-07-07  1218          struct xdp_md 
*ctx;
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1219          void *data;
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1220  
5e21bb4e812566 Xuan Zhuo              2021-07-08  1221          if 
(prog->expected_attach_type == BPF_XDP_DEVMAP ||
5e21bb4e812566 Xuan Zhuo              2021-07-08  1222              
prog->expected_attach_type == BPF_XDP_CPUMAP)
5e21bb4e812566 Xuan Zhuo              2021-07-08  1223                  return 
-EINVAL;
6d4eb36d65979a Andrii Nakryiko        2021-08-04  1224  
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1225          if 
(kattr->test.flags & ~BPF_F_TEST_XDP_LIVE_FRAMES)
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1226                  return 
-EINVAL;
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1227  
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1228          if (do_live) {
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1229                  if 
(!batch_size)
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1230                          
batch_size = NAPI_POLL_WEIGHT;
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1231                  else if 
(batch_size > TEST_XDP_MAX_BATCH)
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1232                          
return -E2BIG;
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1233          } else if 
(batch_size) {
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1234                  return 
-EINVAL;
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1235          }
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1236  
47316f4a305367 Zvi Effron             2021-07-07  1237          ctx = 
bpf_ctx_init(kattr, sizeof(struct xdp_md));
47316f4a305367 Zvi Effron             2021-07-07  1238          if (IS_ERR(ctx))
47316f4a305367 Zvi Effron             2021-07-07  1239                  return 
PTR_ERR(ctx);
47316f4a305367 Zvi Effron             2021-07-07  1240  
47316f4a305367 Zvi Effron             2021-07-07  1241          if (ctx) {
47316f4a305367 Zvi Effron             2021-07-07  1242                  /* 
There can't be user provided data before the meta data */
47316f4a305367 Zvi Effron             2021-07-07  1243                  if 
(ctx->data_meta || ctx->data_end != size ||
47316f4a305367 Zvi Effron             2021-07-07  1244                      
ctx->data > ctx->data_end ||
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1245                      
unlikely(xdp_metalen_invalid(ctx->data)) ||
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1246                      
(do_live && (kattr->test.data_out || kattr->test.ctx_out)))
47316f4a305367 Zvi Effron             2021-07-07  1247                          
goto free_ctx;
47316f4a305367 Zvi Effron             2021-07-07  1248                  /* Meta 
data is allocated from the headroom */
47316f4a305367 Zvi Effron             2021-07-07  1249                  
headroom -= ctx->data;
47316f4a305367 Zvi Effron             2021-07-07  1250          }
947e8b595b82d3 Stanislav Fomichev     2019-04-11  1251  
bc56c919fce782 Jesper Dangaard Brouer 2020-05-14  1252          max_data_sz = 
4096 - headroom - tailroom;
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1253          if (size > 
max_data_sz) {
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1254                  /* 
disallow live data mode for jumbo frames */
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1255                  if 
(do_live)
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1256                          
goto free_ctx;
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1257                  size = 
max_data_sz;
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1258          }
bc56c919fce782 Jesper Dangaard Brouer 2020-05-14  1259  
1c194998252469 Lorenzo Bianconi       2022-01-21  1260          data = 
bpf_test_init(kattr, size, max_data_sz, headroom, tailroom);
47316f4a305367 Zvi Effron             2021-07-07  1261          if 
(IS_ERR(data)) {
47316f4a305367 Zvi Effron             2021-07-07  1262                  ret = 
PTR_ERR(data);
47316f4a305367 Zvi Effron             2021-07-07  1263                  goto 
free_ctx;
47316f4a305367 Zvi Effron             2021-07-07  1264          }
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1265  
65073a67331de3 Daniel Borkmann        2018-01-31  1266          rxqueue = 
__netif_get_rx_queue(current->nsproxy->net_ns->loopback_dev, 0);
1c194998252469 Lorenzo Bianconi       2022-01-21  1267          
rxqueue->xdp_rxq.frag_size = headroom + max_data_sz + tailroom;
1c194998252469 Lorenzo Bianconi       2022-01-21  1268          
xdp_init_buff(&xdp, rxqueue->xdp_rxq.frag_size, &rxqueue->xdp_rxq);
be9df4aff65f18 Lorenzo Bianconi       2020-12-22  1269          
xdp_prepare_buff(&xdp, data, headroom, size, true);
1c194998252469 Lorenzo Bianconi       2022-01-21  1270          sinfo = 
xdp_get_shared_info_from_buff(&xdp);
be9df4aff65f18 Lorenzo Bianconi       2020-12-22  1271  
47316f4a305367 Zvi Effron             2021-07-07  1272          ret = 
xdp_convert_md_to_buff(ctx, &xdp);
47316f4a305367 Zvi Effron             2021-07-07  1273          if (ret)
47316f4a305367 Zvi Effron             2021-07-07  1274                  goto 
free_data;
47316f4a305367 Zvi Effron             2021-07-07  1275  
1c194998252469 Lorenzo Bianconi       2022-01-21  1276          if 
(unlikely(kattr->test.data_size_in > size)) {
1c194998252469 Lorenzo Bianconi       2022-01-21  1277                  void 
__user *data_in = u64_to_user_ptr(kattr->test.data_in);
1c194998252469 Lorenzo Bianconi       2022-01-21  1278  
1c194998252469 Lorenzo Bianconi       2022-01-21  1279                  while 
(size < kattr->test.data_size_in) {
1c194998252469 Lorenzo Bianconi       2022-01-21  1280                          
struct page *page;
1c194998252469 Lorenzo Bianconi       2022-01-21  1281                          
skb_frag_t *frag;
9d63b59d1e9d2d Stanislav Fomichev     2022-02-04  1282                          
u32 data_len;
1c194998252469 Lorenzo Bianconi       2022-01-21  1283  
a6763080856f44 Lorenzo Bianconi       2022-02-02  1284                          
if (sinfo->nr_frags == MAX_SKB_FRAGS) {
a6763080856f44 Lorenzo Bianconi       2022-02-02  1285                          
        ret = -ENOMEM;
a6763080856f44 Lorenzo Bianconi       2022-02-02  1286                          
        goto out;
a6763080856f44 Lorenzo Bianconi       2022-02-02  1287                          
}
a6763080856f44 Lorenzo Bianconi       2022-02-02  1288  
1c194998252469 Lorenzo Bianconi       2022-01-21  1289                          
page = alloc_page(GFP_KERNEL);
1c194998252469 Lorenzo Bianconi       2022-01-21  1290                          
if (!page) {
1c194998252469 Lorenzo Bianconi       2022-01-21  1291                          
        ret = -ENOMEM;
1c194998252469 Lorenzo Bianconi       2022-01-21  1292                          
        goto out;
1c194998252469 Lorenzo Bianconi       2022-01-21  1293                          
}
1c194998252469 Lorenzo Bianconi       2022-01-21  1294  
1c194998252469 Lorenzo Bianconi       2022-01-21  1295                          
frag = &sinfo->frags[sinfo->nr_frags++];
1c194998252469 Lorenzo Bianconi       2022-01-21  1296                          
__skb_frag_set_page(frag, page);
1c194998252469 Lorenzo Bianconi       2022-01-21  1297  
9d63b59d1e9d2d Stanislav Fomichev     2022-02-04  1298                          
data_len = min_t(u32, kattr->test.data_size_in - size,
1c194998252469 Lorenzo Bianconi       2022-01-21  1299                          
                 PAGE_SIZE);
1c194998252469 Lorenzo Bianconi       2022-01-21  1300                          
skb_frag_size_set(frag, data_len);
1c194998252469 Lorenzo Bianconi       2022-01-21  1301  
1c194998252469 Lorenzo Bianconi       2022-01-21  1302                          
if (copy_from_user(page_address(page), data_in + size,
1c194998252469 Lorenzo Bianconi       2022-01-21  1303                          
                   data_len)) {
1c194998252469 Lorenzo Bianconi       2022-01-21  1304                          
        ret = -EFAULT;
1c194998252469 Lorenzo Bianconi       2022-01-21  1305                          
        goto out;
1c194998252469 Lorenzo Bianconi       2022-01-21  1306                          
}
1c194998252469 Lorenzo Bianconi       2022-01-21  1307                          
sinfo->xdp_frags_size += data_len;
1c194998252469 Lorenzo Bianconi       2022-01-21  1308                          
size += data_len;
1c194998252469 Lorenzo Bianconi       2022-01-21  1309                  }
1c194998252469 Lorenzo Bianconi       2022-01-21  1310                  
xdp_buff_set_frags_flag(&xdp);
1c194998252469 Lorenzo Bianconi       2022-01-21  1311          }
1c194998252469 Lorenzo Bianconi       2022-01-21  1312  
de21d8bf777240 Lorenz Bauer           2021-09-28  1313          if (repeat > 1)
f23c4b3924d2e9 Björn Töpel            2019-12-13  1314                  
bpf_prog_change_xdp(NULL, prog);
1c194998252469 Lorenzo Bianconi       2022-01-21  1315  
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1316          if (do_live)
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1317                  ret = 
bpf_test_run_xdp_live(prog, &xdp, repeat, batch_size, &duration);
429da9d7b2fa52 Toke Høiland-Jørgensen 2022-03-09  1318          else
f23c4b3924d2e9 Björn Töpel            2019-12-13  1319                  ret = 
bpf_test_run(prog, &xdp, repeat, &retval, &duration, true);
ec94670fcb3bde Zvi Effron             2021-07-07  1320          /* We convert 
the xdp_buff back to an xdp_md before checking the return
ec94670fcb3bde Zvi Effron             2021-07-07  1321           * code so the 
reference count of any held netdevice will be decremented
ec94670fcb3bde Zvi Effron             2021-07-07  1322           * even if the 
test run failed.
ec94670fcb3bde Zvi Effron             2021-07-07  1323           */
ec94670fcb3bde Zvi Effron             2021-07-07  1324          
xdp_convert_buff_to_md(&xdp, ctx);
dcb40590e69e30 Roman Gushchin         2018-12-01  1325          if (ret)
dcb40590e69e30 Roman Gushchin         2018-12-01  1326                  goto 
out;
47316f4a305367 Zvi Effron             2021-07-07  1327  
1c194998252469 Lorenzo Bianconi       2022-01-21  1328          size = 
xdp.data_end - xdp.data_meta + sinfo->xdp_frags_size;
7855e0db150ad8 Lorenzo Bianconi       2022-01-21  1329          ret = 
bpf_test_finish(kattr, uattr, xdp.data_meta, sinfo, size,
7855e0db150ad8 Lorenzo Bianconi       2022-01-21 @1330                          
      retval, duration);
47316f4a305367 Zvi Effron             2021-07-07  1331          if (!ret)
47316f4a305367 Zvi Effron             2021-07-07  1332                  ret = 
bpf_ctx_finish(kattr, uattr, ctx,
47316f4a305367 Zvi Effron             2021-07-07  1333                          
             sizeof(struct xdp_md));
47316f4a305367 Zvi Effron             2021-07-07  1334  
dcb40590e69e30 Roman Gushchin         2018-12-01  1335  out:
de21d8bf777240 Lorenz Bauer           2021-09-28  1336          if (repeat > 1)
f23c4b3924d2e9 Björn Töpel            2019-12-13  1337                  
bpf_prog_change_xdp(prog, NULL);
47316f4a305367 Zvi Effron             2021-07-07  1338  free_data:
1c194998252469 Lorenzo Bianconi       2022-01-21  1339          for (i = 0; i < 
sinfo->nr_frags; i++)
1c194998252469 Lorenzo Bianconi       2022-01-21  1340                  
__free_page(skb_frag_page(&sinfo->frags[i]));
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1341          kfree(data);
47316f4a305367 Zvi Effron             2021-07-07  1342  free_ctx:
47316f4a305367 Zvi Effron             2021-07-07  1343          kfree(ctx);
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1344          return ret;
1cf1cae963c2e6 Alexei Starovoitov     2017-03-30  1345  }
b7a1848e8398b8 Stanislav Fomichev     2019-01-28  1346  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to