From 39807b47cb2d3b355857e3e3ffa63fbb42e348d1 Mon Sep 17 00:00:00 2001 From: Alexander Gozman Date: Sun, 20 Aug 2017 15:22:34 +0300 Subject: [PATCH] Bug #2201: af_packet - treat BPF filter error as fatal There is no need to try to set erroneous BPF filter again and again. Such attempts lead to constant mmap() calls without corresponding munmap() when 'use-mmap' is enabled. --- src/source-af-packet.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/source-af-packet.c b/src/source-af-packet.c index 791a51025d..b225057fbf 100644 --- a/src/source-af-packet.c +++ b/src/source-af-packet.c @@ -2045,21 +2045,14 @@ static int AFPCreateSocket(AFPThreadVars *ptv, char *devname, int verbose) rc = AFPSetBPFFilter(ptv); if (rc == TM_ECODE_FAILED) { SCLogError(SC_ERR_AFP_CREATE, "Set AF_PACKET bpf filter \"%s\" failed.", ptv->bpf_filter); - goto frame_err; + ret = AFP_FATAL_ERROR; + goto socket_err; } /* Init is ok */ AFPSwitchState(ptv, AFP_STATE_UP); return 0; -frame_err: - if (ptv->flags & AFP_TPACKET_V3) { - if (ptv->ring_v3) - SCFree(ptv->ring_v3); - } else { - if (ptv->ring_v2) - SCFree(ptv->ring_v2); - } socket_err: close(ptv->socket); ptv->socket = -1; @@ -2112,7 +2105,6 @@ TmEcode AFPSetBPFFilter(AFPThreadVars *ptv) return TM_ECODE_OK; } - /** * \brief Init function for ReceiveAFP. *