selftests/xsk: print correct error codes when exiting
authorMagnus Karlsson <magnus.karlsson@intel.com>
Wed, 11 Jan 2023 09:35:15 +0000 (10:35 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 12 Jan 2023 02:16:51 +0000 (18:16 -0800)
Print the correct error codes when exiting the test suite due to some
terminal error. Some of these had a switched sign and some of them
printed zero instead of errno.

Fixes: facb7cb2e909 ("selftests/bpf: Xsk selftests - SKB POLL, NOPOLL")
Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Acked-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Link: https://lore.kernel.org/r/20230111093526.11682-5-magnus.karlsson@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/xskxceiver.c

index a239e975ab662ba4f148fe40dd6180167701bc51..72578cebfbf72c0cf8720b02c0398dbc7f84b9b6 100644 (file)
@@ -350,7 +350,7 @@ static bool ifobj_zc_avail(struct ifobject *ifobject)
        umem = calloc(1, sizeof(struct xsk_umem_info));
        if (!umem) {
                munmap(bufs, umem_sz);
-               exit_with_error(-ENOMEM);
+               exit_with_error(ENOMEM);
        }
        umem->frame_size = XSK_UMEM__DEFAULT_FRAME_SIZE;
        ret = xsk_configure_umem(umem, bufs, umem_sz);
@@ -936,7 +936,7 @@ static int receive_pkts(struct test_spec *test, struct pollfd *fds)
                if (ifobj->use_poll) {
                        ret = poll(fds, 1, POLL_TMOUT);
                        if (ret < 0)
-                               exit_with_error(-ret);
+                               exit_with_error(errno);
 
                        if (!ret) {
                                if (!is_umem_valid(test->ifobj_tx))
@@ -963,7 +963,7 @@ static int receive_pkts(struct test_spec *test, struct pollfd *fds)
                                if (xsk_ring_prod__needs_wakeup(&umem->fq)) {
                                        ret = poll(fds, 1, POLL_TMOUT);
                                        if (ret < 0)
-                                               exit_with_error(-ret);
+                                               exit_with_error(errno);
                                }
                                ret = xsk_ring_prod__reserve(&umem->fq, rcvd, &idx_fq);
                        }
@@ -1015,7 +1015,7 @@ static int __send_pkts(struct ifobject *ifobject, u32 *pkt_nb, struct pollfd *fd
                        if (timeout) {
                                if (ret < 0) {
                                        ksft_print_msg("ERROR: [%s] Poll error %d\n",
-                                                      __func__, ret);
+                                                      __func__, errno);
                                        return TEST_FAILURE;
                                }
                                if (ret == 0)
@@ -1024,7 +1024,7 @@ static int __send_pkts(struct ifobject *ifobject, u32 *pkt_nb, struct pollfd *fd
                        }
                        if (ret <= 0) {
                                ksft_print_msg("ERROR: [%s] Poll error %d\n",
-                                              __func__, ret);
+                                              __func__, errno);
                                return TEST_FAILURE;
                        }
                }
@@ -1323,18 +1323,18 @@ static void thread_common_ops(struct test_spec *test, struct ifobject *ifobject)
        if (ifobject->xdp_flags & XDP_FLAGS_SKB_MODE) {
                if (opts.attach_mode != XDP_ATTACHED_SKB) {
                        ksft_print_msg("ERROR: [%s] XDP prog not in SKB mode\n");
-                       exit_with_error(-EINVAL);
+                       exit_with_error(EINVAL);
                }
        } else if (ifobject->xdp_flags & XDP_FLAGS_DRV_MODE) {
                if (opts.attach_mode != XDP_ATTACHED_DRV) {
                        ksft_print_msg("ERROR: [%s] XDP prog not in DRV mode\n");
-                       exit_with_error(-EINVAL);
+                       exit_with_error(EINVAL);
                }
        }
 
        ret = xsk_socket__update_xskmap(ifobject->xsk->xsk, ifobject->xsk_map_fd);
        if (ret)
-               exit_with_error(-ret);
+               exit_with_error(errno);
 }
 
 static void *worker_testapp_validate_tx(void *arg)
@@ -1541,7 +1541,7 @@ static void swap_xsk_resources(struct ifobject *ifobj_tx, struct ifobject *ifobj
 
        ret = xsk_socket__update_xskmap(ifobj_rx->xsk->xsk, ifobj_rx->xsk_map_fd);
        if (ret)
-               exit_with_error(-ret);
+               exit_with_error(errno);
 }
 
 static void testapp_bpf_res(struct test_spec *test)