[PATCH bpf-next v5 6/6] selftests/bpf: fix file descriptor assertion in open_tuntap helper

From: Marcus Wichelmann
Date: Wed Mar 05 2025 - 16:36:22 EST


The open_tuntap helper function uses open() to get a file descriptor for
/dev/net/tun.

The open(2) manpage writes this about its return value:

On success, open(), openat(), and creat() return the new file
descriptor (a nonnegative integer). On error, -1 is returned and
errno is set to indicate the error.

This means that the fd > 0 assertion in the open_tuntap helper is
incorrect and should rather check for fd >= 0.

When running the BPF selftests locally, this incorrect assertion was not
an issue, but the BPF kernel-patches CI failed because of this:

open_tuntap:FAIL:open(/dev/net/tun) unexpected open(/dev/net/tun):
actual 0 <= expected 0

Signed-off-by: Marcus Wichelmann <marcus.wichelmann@xxxxxxxxxxxxxxxx>
Reviewed-by: Willem de Bruijn <willemb@xxxxxxxxxx>
---
tools/testing/selftests/bpf/network_helpers.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c
index fcee2c4a637a..29541d486c5e 100644
--- a/tools/testing/selftests/bpf/network_helpers.c
+++ b/tools/testing/selftests/bpf/network_helpers.c
@@ -554,7 +554,7 @@ int open_tuntap(const char *dev_name, bool need_mac)
struct ifreq ifr;
int fd = open("/dev/net/tun", O_RDWR);

- if (!ASSERT_GT(fd, 0, "open(/dev/net/tun)"))
+ if (!ASSERT_GE(fd, 0, "open(/dev/net/tun)"))
return -1;

ifr.ifr_flags = IFF_NO_PI | (need_mac ? IFF_TAP : IFF_TUN);
--
2.43.0