From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Cc: Jozsef Kadlecsik <kadlec@netfilter.org>,
Florian Westphal <fw@strlen.de>,
syzbot <syzbot+b5d82a651b71cd8a75ab@syzkaller.appspotmail.com>,
syzkaller-bugs@googlegroups.com, netfilter-devel@vger.kernel.org,
coreteam@netfilter.org,
Network Development <netdev@vger.kernel.org>
Subject: Re: [PATCH] netfilter: nf_tables: fix nft_counters_enabled underflow at nf_tables_addchain()
Date: Mon, 12 Sep 2022 14:44:58 +0200 [thread overview]
Message-ID: <Yx8pyq97n8gIN0ui@salvia> (raw)
In-Reply-To: <8c86a1bb-9c43-b02e-cf93-e098b158ee8c@I-love.SAKURA.ne.jp>
On Mon, Sep 12, 2022 at 09:41:00PM +0900, Tetsuo Handa wrote:
> syzbot is reporting underflow of nft_counters_enabled counter at
> nf_tables_addchain() [1], for commit 43eb8949cfdffa76 ("netfilter:
> nf_tables: do not leave chain stats enabled on error") missed that
> nf_tables_chain_destroy() after nft_basechain_init() in the error path of
> nf_tables_addchain() decrements the counter because nft_basechain_init()
> makes nft_is_base_chain() return true by setting NFT_CHAIN_BASE flag.
>
> Increment the counter immediately after returning from
> nft_basechain_init().
Patch LGTM, thanks
> Link: https://syzkaller.appspot.com/bug?extid=b5d82a651b71cd8a75ab [1]
> Reported-by: syzbot <syzbot+b5d82a651b71cd8a75ab@syzkaller.appspotmail.com>
> Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> Tested-by: syzbot <syzbot+b5d82a651b71cd8a75ab@syzkaller.appspotmail.com>
> Fixes: 43eb8949cfdffa76 ("netfilter: nf_tables: do not leave chain stats enabled on error")
> ---
> net/netfilter/nf_tables_api.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
> index 816052089b33..e062754dc6cc 100644
> --- a/net/netfilter/nf_tables_api.c
> +++ b/net/netfilter/nf_tables_api.c
> @@ -2197,7 +2197,6 @@ static int nf_tables_addchain(struct nft_ctx *ctx, u8 family, u8 genmask,
> struct netlink_ext_ack *extack)
> {
> const struct nlattr * const *nla = ctx->nla;
> - struct nft_stats __percpu *stats = NULL;
> struct nft_table *table = ctx->table;
> struct nft_base_chain *basechain;
> struct net *net = ctx->net;
> @@ -2212,6 +2211,7 @@ static int nf_tables_addchain(struct nft_ctx *ctx, u8 family, u8 genmask,
> return -EOVERFLOW;
>
> if (nla[NFTA_CHAIN_HOOK]) {
> + struct nft_stats __percpu *stats = NULL;
> struct nft_chain_hook hook;
>
> if (flags & NFT_CHAIN_BINDING)
> @@ -2245,6 +2245,8 @@ static int nf_tables_addchain(struct nft_ctx *ctx, u8 family, u8 genmask,
> kfree(basechain);
> return err;
> }
> + if (stats)
> + static_branch_inc(&nft_counters_enabled);
> } else {
> if (flags & NFT_CHAIN_BASE)
> return -EINVAL;
> @@ -2319,9 +2321,6 @@ static int nf_tables_addchain(struct nft_ctx *ctx, u8 family, u8 genmask,
> goto err_unregister_hook;
> }
>
> - if (stats)
> - static_branch_inc(&nft_counters_enabled);
> -
> table->use++;
>
> return 0;
> --
> 2.18.4
>
next prev parent reply other threads:[~2022-09-12 12:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-06 10:48 [syzbot] WARNING in static_key_slow_try_dec (3) syzbot
2022-09-12 12:41 ` [PATCH] netfilter: nf_tables: fix nft_counters_enabled underflow at nf_tables_addchain() Tetsuo Handa
2022-09-12 12:44 ` Pablo Neira Ayuso [this message]
2022-09-15 20:19 ` Florian Westphal
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=Yx8pyq97n8gIN0ui@salvia \
--to=pablo@netfilter.org \
--cc=coreteam@netfilter.org \
--cc=fw@strlen.de \
--cc=kadlec@netfilter.org \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=syzbot+b5d82a651b71cd8a75ab@syzkaller.appspotmail.com \
--cc=syzkaller-bugs@googlegroups.com \
/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.