diff --git a/firewall/interception/ebpf/bandwidth/interface.go b/firewall/interception/ebpf/bandwidth/interface.go index f247b157..992b8835 100644 --- a/firewall/interception/ebpf/bandwidth/interface.go +++ b/firewall/interception/ebpf/bandwidth/interface.go @@ -28,6 +28,10 @@ func BandwidthStatsWorker(ctx context.Context, collectInterval time.Duration, ba // Allow the current process to lock memory for eBPF resources. err := rlimit.RemoveMemlock() if err != nil { + if ebpfLoadingFailed.Add(1) >= 5 { + log.Warningf("ebpf: failed to remove memlock 5 times, giving up with error %s", err) + return nil + } return fmt.Errorf("ebpf: failed to remove memlock: %w", err) } diff --git a/firewall/interception/ebpf/connection_listener/worker.go b/firewall/interception/ebpf/connection_listener/worker.go index 1dee07be..bee03f12 100644 --- a/firewall/interception/ebpf/connection_listener/worker.go +++ b/firewall/interception/ebpf/connection_listener/worker.go @@ -26,6 +26,10 @@ var ebpfLoadingFailed atomic.Uint32 func ConnectionListenerWorker(ctx context.Context, packets chan packet.Packet) error { // Allow the current process to lock memory for eBPF resources. if err := rlimit.RemoveMemlock(); err != nil { + if ebpfLoadingFailed.Add(1) >= 5 { + log.Warningf("ebpf: failed to remove memlock 5 times, giving up with error %s", err) + return nil + } return fmt.Errorf("ebpf: failed to remove ebpf memlock: %w", err) }