From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Yajun Deng <yajun.deng@linux.dev>
Cc: netdev@vger.kernel.org, bridge@lists.linux-foundation.org,
fw@strlen.de, linux-kernel@vger.kernel.org, kadlec@netfilter.org,
coreteam@netfilter.org, netfilter-devel@vger.kernel.org,
nikolay@nvidia.com, roopa@nvidia.com, kuba@kernel.org,
davem@davemloft.net
Subject: Re: [Bridge] [PATCH] netfilter: nf_conntrack_bridge: Fix not free when error
Date: Wed, 28 Jul 2021 18:18:49 +0200 [thread overview]
Message-ID: <20210728161849.GA10433@salvia> (raw)
In-Reply-To: <20210726035702.11964-1-yajun.deng@linux.dev>
[-- Attachment #1: Type: text/plain, Size: 1276 bytes --]
On Mon, Jul 26, 2021 at 11:57:02AM +0800, Yajun Deng wrote:
> It should be added kfree_skb_list() when err is not equal to zero
> in nf_br_ip_fragment().
>
> Fixes: 3c171f496ef5 ("netfilter: bridge: add connection tracking system")
> Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
> ---
> net/bridge/netfilter/nf_conntrack_bridge.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/net/bridge/netfilter/nf_conntrack_bridge.c b/net/bridge/netfilter/nf_conntrack_bridge.c
> index 8d033a75a766..059f53903eda 100644
> --- a/net/bridge/netfilter/nf_conntrack_bridge.c
> +++ b/net/bridge/netfilter/nf_conntrack_bridge.c
> @@ -83,12 +83,16 @@ static int nf_br_ip_fragment(struct net *net, struct sock *sk,
>
> skb->tstamp = tstamp;
> err = output(net, sk, data, skb);
> - if (err || !iter.frag)
> - break;
> -
> + if (err) {
> + kfree_skb_list(iter.frag);
> + return err;
> + }
> +
> + if (!iter.frag)
> + return 0;
> +
> skb = ip_fraglist_next(&iter);
> }
> - return err;
Why removing this line above? It enters slow_path: on success.
This patch instead will keep this aligned with IPv6.
> }
> slow_path:
> /* This is a linearized skbuff, the original geometry is lost for us.
> --
> 2.32.0
>
[-- Attachment #2: x.patch --]
[-- Type: text/x-diff, Size: 460 bytes --]
diff --git a/net/bridge/netfilter/nf_conntrack_bridge.c b/net/bridge/netfilter/nf_conntrack_bridge.c
index 8d033a75a766..3cf5457919c6 100644
--- a/net/bridge/netfilter/nf_conntrack_bridge.c
+++ b/net/bridge/netfilter/nf_conntrack_bridge.c
@@ -88,6 +88,11 @@ static int nf_br_ip_fragment(struct net *net, struct sock *sk,
skb = ip_fraglist_next(&iter);
}
+
+ if (!err)
+ return 0;
+
+ kfree_skb_list(iter.frag_list);
return err;
}
slow_path:
WARNING: multiple messages have this Message-ID (diff)
From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Yajun Deng <yajun.deng@linux.dev>
Cc: kadlec@netfilter.org, fw@strlen.de, roopa@nvidia.com,
nikolay@nvidia.com, davem@davemloft.net, kuba@kernel.org,
netfilter-devel@vger.kernel.org, coreteam@netfilter.org,
bridge@lists.linux-foundation.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] netfilter: nf_conntrack_bridge: Fix not free when error
Date: Wed, 28 Jul 2021 18:18:49 +0200 [thread overview]
Message-ID: <20210728161849.GA10433@salvia> (raw)
In-Reply-To: <20210726035702.11964-1-yajun.deng@linux.dev>
[-- Attachment #1: Type: text/plain, Size: 1276 bytes --]
On Mon, Jul 26, 2021 at 11:57:02AM +0800, Yajun Deng wrote:
> It should be added kfree_skb_list() when err is not equal to zero
> in nf_br_ip_fragment().
>
> Fixes: 3c171f496ef5 ("netfilter: bridge: add connection tracking system")
> Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
> ---
> net/bridge/netfilter/nf_conntrack_bridge.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/net/bridge/netfilter/nf_conntrack_bridge.c b/net/bridge/netfilter/nf_conntrack_bridge.c
> index 8d033a75a766..059f53903eda 100644
> --- a/net/bridge/netfilter/nf_conntrack_bridge.c
> +++ b/net/bridge/netfilter/nf_conntrack_bridge.c
> @@ -83,12 +83,16 @@ static int nf_br_ip_fragment(struct net *net, struct sock *sk,
>
> skb->tstamp = tstamp;
> err = output(net, sk, data, skb);
> - if (err || !iter.frag)
> - break;
> -
> + if (err) {
> + kfree_skb_list(iter.frag);
> + return err;
> + }
> +
> + if (!iter.frag)
> + return 0;
> +
> skb = ip_fraglist_next(&iter);
> }
> - return err;
Why removing this line above? It enters slow_path: on success.
This patch instead will keep this aligned with IPv6.
> }
> slow_path:
> /* This is a linearized skbuff, the original geometry is lost for us.
> --
> 2.32.0
>
[-- Attachment #2: x.patch --]
[-- Type: text/x-diff, Size: 460 bytes --]
diff --git a/net/bridge/netfilter/nf_conntrack_bridge.c b/net/bridge/netfilter/nf_conntrack_bridge.c
index 8d033a75a766..3cf5457919c6 100644
--- a/net/bridge/netfilter/nf_conntrack_bridge.c
+++ b/net/bridge/netfilter/nf_conntrack_bridge.c
@@ -88,6 +88,11 @@ static int nf_br_ip_fragment(struct net *net, struct sock *sk,
skb = ip_fraglist_next(&iter);
}
+
+ if (!err)
+ return 0;
+
+ kfree_skb_list(iter.frag_list);
return err;
}
slow_path:
next prev parent reply other threads:[~2021-07-28 16:18 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-26 3:57 [Bridge] [PATCH] netfilter: nf_conntrack_bridge: Fix not free when error Yajun Deng
2021-07-26 3:57 ` Yajun Deng
2021-07-28 16:18 ` Pablo Neira Ayuso [this message]
2021-07-28 16:18 ` Pablo Neira Ayuso
2021-07-29 3:19 ` [Bridge] " yajun.deng
2021-07-29 3:19 ` yajun.deng
2021-07-29 7:24 ` [Bridge] " Pablo Neira Ayuso
2021-07-29 7:24 ` Pablo Neira Ayuso
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210728161849.GA10433@salvia \
--to=pablo@netfilter.org \
--cc=bridge@lists.linux-foundation.org \
--cc=coreteam@netfilter.org \
--cc=davem@davemloft.net \
--cc=fw@strlen.de \
--cc=kadlec@netfilter.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=nikolay@nvidia.com \
--cc=roopa@nvidia.com \
--cc=yajun.deng@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.