From c9673e0de432fed3adbe6688fbebd7f46a1e162a Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 9 Nov 2016 11:27:47 -0500 Subject: [PATCH] solve a kernel mem leak when strict-source is set and triggered Change-Id: Ib603c5b9587e9b027d34e20bc135a755ab04caf3 (cherry picked from commit 0a593cfed132b4b5ba3a50d0d4a356049612fd00) --- kernel-module/xt_RTPENGINE.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/kernel-module/xt_RTPENGINE.c b/kernel-module/xt_RTPENGINE.c index bdfda4fa4..5972c7037 100644 --- a/kernel-module/xt_RTPENGINE.c +++ b/kernel-module/xt_RTPENGINE.c @@ -2457,6 +2457,7 @@ static unsigned int rtpengine46(struct sk_buff *skb, struct rtpengine_table *t, struct rtpengine_target *g; struct sk_buff *skb2; int err; + int error_nf_action = XT_CONTINUE; #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) int rtp_pt_idx = -2; #endif @@ -2517,8 +2518,8 @@ not_stun: if (g->target.src_mismatch == MSM_PROPAGATE) goto skip1; /* MSM_DROP */ - err = -1; - goto out; + error_nf_action = NF_DROP; + goto skip_error; src_check_ok: if (g->target.dtls && is_dtls(skb)) @@ -2580,8 +2581,6 @@ not_rtp: err = send_proxy_packet(skb, &g->target.src_addr, &g->target.dst_addr, g->target.tos, par); -out: - if (atomic64_read(&g->stats.packets)==0) atomic_set(&g->stats.in_tos,in_tos); @@ -2640,7 +2639,7 @@ skip1: skip2: kfree_skb(skb); table_push(t); - return XT_CONTINUE; + return error_nf_action; }