From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Gao Feng <fgao@ikuai8.com>
Cc: Netfilter Developer Mailing List <netfilter-devel@vger.kernel.org>
Subject: Re: [PATCH nf-next 1/1] netfilter: nf_tables: Refine the codes to eliminate useless condition checks in nf_tables_api.c
Date: Mon, 16 Jan 2017 14:38:18 +0100 [thread overview]
Message-ID: <20170116133818.GA5335@salvia> (raw)
In-Reply-To: <CA+6hz4rCrD_d6+TdhNOTF4B0AGk8jJjF_NPbC=PgJN9ZQq77Hg@mail.gmail.com>
On Thu, Jan 12, 2017 at 11:10:11PM +0800, Gao Feng wrote:
> Hi Pablo,
>
> On Thu, Jan 12, 2017 at 7:21 PM, Pablo Neira Ayuso <pablo@netfilter.org> wrote:
> > On Wed, Jan 11, 2017 at 09:32:15AM +0800, fgao@ikuai8.com wrote:
> >> From: Gao Feng <fgao@ikuai8.com>
> >>
> >> The return value of nf_tables_table_lookup is valid pointer or one
> >> pointer error. There are two cases totally.
> >> case1: IS_ERR(table) is true, it would return the error or reset the
> >> table as NULL, it is unnecessary to perform the latter check
> >> "table != NULL".
> >> case2: IS_ERR(obj) is false, the table is one valid pointer. It is also
> >> unnecessary to perform that check.
> >> The nf_tables_newset and nf_tables_newobj have same logic codes.
> >>
> >> In summary, we could move the block of condition check "table != NULL"
> >> in the else block to eliminate the original condition checks.
> >>
> >> Signed-off-by: Gao Feng <fgao@ikuai8.com>
> >> ---
> >> net/netfilter/nf_tables_api.c | 12 +++---------
> >> 1 file changed, 3 insertions(+), 9 deletions(-)
> >>
> >> diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
> >> index a019a87..3d7267f 100644
> >> --- a/net/netfilter/nf_tables_api.c
> >> +++ b/net/netfilter/nf_tables_api.c
> >> @@ -697,9 +697,7 @@ static int nf_tables_newtable(struct net *net, struct sock *nlsk,
> >> if (PTR_ERR(table) != -ENOENT)
> >> return PTR_ERR(table);
> >> table = NULL;
> >
> > We follow up with table = NULL down the code, I think this breaks.
>
> Look at the following nf_tables_table_lookup codes, it won't return NULL.
> It returns one valid table pointer or one error.
>
> static struct nft_table *nf_tables_table_lookup(const struct nft_af_info *afi,
> const struct nlattr *nla,
> u8 genmask)
> {
> struct nft_table *table;
>
> if (nla == NULL)
> return ERR_PTR(-EINVAL);
>
> table = nft_table_lookup(afi, nla, genmask);
> if (table != NULL)
> return table;
>
> return ERR_PTR(-ENOENT);
> }
>
> When returns one error, IS_ERR(table) is true, it then returns error
> or reset table as NULL.
> Wehn returns a valid table pointer, IS_ERR(table) is false, we could
> perform the latter codes like "if (nlh->nlmsg_flags & NLM_F_EXCL)"
> directly.
Right.
Then, I think we can remove the unneccessary table = NULL assigment:
@@ -697,9 +697,7 @@ static int nf_tables_newtable(struct net *net, struct sock *nlsk,
if (PTR_ERR(table) != -ENOENT)
return PTR_ERR(table);
table = NULL; <----- this
- }
-
- if (table != NULL) {
+ } else {
if (nlh->nlmsg_flags & NLM_F_EXCL)
return -EEXIST;
if (nlh->nlmsg_flags & NLM_F_REPLACE)
prev parent reply other threads:[~2017-01-16 13:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-11 1:32 [PATCH nf-next 1/1] netfilter: nf_tables: Refine the codes to eliminate useless condition checks in nf_tables_api.c fgao
2017-01-12 11:21 ` Pablo Neira Ayuso
2017-01-12 15:10 ` Gao Feng
2017-01-16 13:38 ` Pablo Neira Ayuso [this message]
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=20170116133818.GA5335@salvia \
--to=pablo@netfilter.org \
--cc=fgao@ikuai8.com \
--cc=netfilter-devel@vger.kernel.org \
/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.