ebpf_rss_load() returns false for failure without setting an Error when its @ctx argument already has an eBPF program loaded. This is wrong. Fortunately, it is only called @ctx has a program. Replace the incorrect error check by an assertion.
The return value is now obviously reliable. Change the caller to use it, because it's more concise. Signed-off-by: Markus Armbruster <[email protected]> --- ebpf/ebpf_rss.c | 4 +--- hw/net/virtio-net.c | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/ebpf/ebpf_rss.c b/ebpf/ebpf_rss.c index b64e9da3e3..926392b3c5 100644 --- a/ebpf/ebpf_rss.c +++ b/ebpf/ebpf_rss.c @@ -106,9 +106,7 @@ bool ebpf_rss_load(struct EBPFRSSContext *ctx, Error **errp) { struct rss_bpf *rss_bpf_ctx; - if (ebpf_rss_is_loaded(ctx)) { - return false; - } + g_assert(!ebpf_rss_is_loaded(ctx)); rss_bpf_ctx = rss_bpf__open(); if (rss_bpf_ctx == NULL) { diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 3b85560f6f..f5d93eb400 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -1363,9 +1363,7 @@ static bool virtio_net_load_ebpf(VirtIONet *n, Error **errp) return virtio_net_load_ebpf_fds(n, errp); } - ebpf_rss_load(&n->ebpf_rss, &err); - /* Beware, ebpf_rss_load() can return false with @err unset */ - if (err) { + if (!ebpf_rss_load(&n->ebpf_rss, &err)) { warn_report_err(err); } return true; -- 2.49.0
