netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jamal Hadi Salim <hadi@mojatatu.com>
To: Dan Carpenter <dan.carpenter@linaro.org>
Cc: Simon Horman <simon.horman@corigine.com>,
	netdev@vger.kernel.org,  deb.chatterjee@intel.com,
	tom@sipanda.io, p4tc-discussions@netdevconf.info,
	 Mahesh.Shirshyad@amd.com, Vipin.Jain@amd.com,
	tomasz.osinski@intel.com,  xiyou.wangcong@gmail.com,
	davem@davemloft.net, edumazet@google.com,  kuba@kernel.org,
	pabeni@redhat.com, khalidm@nvidia.com, toke@redhat.com
Subject: Re: [p4tc-discussions] Re: [PATCH RFC v2 net-next 04/28] net/sched: act_api: add init_ops to struct tc_action_op
Date: Mon, 5 Jun 2023 10:01:44 -0400	[thread overview]
Message-ID: <CAAFAkD-N4qeYpPMOf7WFORjnt0CDztBzHF2aF2iD+qRNLdCqbA@mail.gmail.com> (raw)
In-Reply-To: <9a777d0b-b212-4487-b5ac-9a05fafac6c7@kadam.mountain>

On Mon, Jun 5, 2023 at 7:39 AM Dan Carpenter via p4tc-discussions
<p4tc-discussions@netdevconf.info> wrote:
>
> On Mon, Jun 05, 2023 at 11:51:14AM +0200, Simon Horman wrote:
> > > @@ -1494,8 +1494,13 @@ struct tc_action *tcf_action_init_1(struct net *net, struct tcf_proto *tp,
> > >                     }
> > >             }
> > >
> > > -           err = a_o->init(net, tb[TCA_ACT_OPTIONS], est, &a, tp,
> > > -                           userflags.value | flags, extack);
> > > +           if (a_o->init)
> > > +                   err = a_o->init(net, tb[TCA_ACT_OPTIONS], est, &a, tp,
> > > +                                   userflags.value | flags, extack);
> > > +           else if (a_o->init_ops)
> > > +                   err = a_o->init_ops(net, tb[TCA_ACT_OPTIONS], est, &a,
> > > +                                       tp, a_o, userflags.value | flags,
> > > +                                       extack);
> >
> > By my reading the initialisation of a occurs here.
> > Which is now conditional.
> >
>
> Right.  Presumably the author knows that one (and only one) of the
> ->init or ->init_ops pointers is set.

Yes, this is correct and the code above checks i.e
 -     if (!act->act || !act->dump || !act->init)
 +     if (!act->act || !act->dump || (!act->init && !act->init_ops))
               return -EINVAL;

> This kind of relationship between
> two variables is something that Smatch tries to track inside a function
> but outside of functions, like here, then Smatch doesn't track it.
> I can't really think of a scalable way to track this.

Could you have used the statement i referred to above as part of the state?

> So there are a couple options:
>
> 1) Ignore the warning.
> 2) Remove the second if.
>
>         if (a_o->init)
>                 err = a_o->init();
>         else
>                 err = a_o->init_ops();
>
> I kind of like this, because I think it communicates the if ->init()
> isn't set then ->init_ops() must be.

I like this approach - we'll refactor to remove the !police. (note
police using some old tc versions is still a pariah and has typically
to be checked separately, at some point we should audit the code and
remove any police specific checks).

cheers,
jamal

> 3) Add a return.
>
>         if (a_o->init) {
>                 err = a_o->init();
>         } else if (a_o->init_ops) {
>                 err = a_o->init_ops();
>         } else {
>                 WARN_ON(1);
>                 return ERR_PTR(-EINVAL);
>         }
>
> 4) Add an unreachable.  But the last time I suggested this it led to
> link errors and I didn't get a chance to investigate so probably don't
> do this:
>
>         if (a_o->init) {
>                 err = a_o->init();
>         } else if (a_o->init_ops) {
>                 err = a_o->init_ops();
>         } else {
>                 unreachable();
>         }
>
> regards,
> dan carpenter
>
> _______________________________________________
> p4tc-discussions mailing list -- p4tc-discussions@netdevconf.info
> To unsubscribe send an email to p4tc-discussions-leave@netdevconf.info

  reply	other threads:[~2023-06-05 14:01 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-17 11:02 [PATCH RFC v2 net-next 01/28] net: sched: act_api: Add dynamic actions IDR Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 02/28] net/sched: act_api: increase action kind string length Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 03/28] net/sched: act_api: increase TCA_ID_MAX Jamal Hadi Salim
2023-06-02 14:19   ` Marcelo Ricardo Leitner
2023-06-03 13:03     ` Jamal Hadi Salim
2023-06-05 17:39   ` Jakub Kicinski
2023-06-06 17:04     ` [p4tc-discussions] " Jamal Hadi Salim
2023-06-06 17:15       ` Jakub Kicinski
2023-06-06 18:52         ` Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 04/28] net/sched: act_api: add init_ops to struct tc_action_op Jamal Hadi Salim
2023-06-05  9:51   ` Simon Horman
2023-06-05 11:09     ` Dan Carpenter
2023-06-05 14:01       ` Jamal Hadi Salim [this message]
2023-06-05 14:57         ` [p4tc-discussions] " Dan Carpenter
2023-06-05 15:27           ` Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 05/28] net/sched: act_api: introduce tc_lookup_action_byid() Jamal Hadi Salim
2023-06-02 19:36   ` Marcelo Ricardo Leitner
2023-06-03 13:10     ` Jamal Hadi Salim
2023-06-03 13:14     ` Jamal Hadi Salim
2023-06-05 12:08       ` Marcelo Ricardo Leitner
2023-06-05 14:55         ` [p4tc-discussions] " Jamal Hadi Salim
2023-06-05  9:55   ` Simon Horman
2023-06-05 14:17     ` [p4tc-discussions] " Jamal Hadi Salim
2023-06-05 14:31       ` Simon Horman
2023-06-05 15:04         ` Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 06/28] net/sched: act_api: export generic tc action searcher Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 07/28] net/sched: act_api: add struct p4tc_action_ops as a parameter to lookup callback Jamal Hadi Salim
2023-06-02 19:43   ` Marcelo Ricardo Leitner
2023-06-03 13:17     ` Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 08/28] net: introduce rcu_replace_pointer_rtnl Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 09/28] p4tc: add P4 data types Jamal Hadi Salim
2023-06-02 20:30   ` Marcelo Ricardo Leitner
2023-06-03 13:54     ` Jamal Hadi Salim
2023-06-05 10:08   ` Simon Horman
2023-06-05 14:26     ` [p4tc-discussions] " Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 10/28] p4tc: add pipeline create, get, update, delete Jamal Hadi Salim
2023-06-05 10:12   ` Simon Horman
2023-06-05 14:32     ` [p4tc-discussions] " Jamal Hadi Salim
2023-06-05 14:35       ` Simon Horman
2023-06-05 15:13         ` Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 11/28] p4tc: add metadata create, update, delete, get, flush and dump Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 12/28] p4tc: add header field create, get, delete, " Jamal Hadi Salim
2023-06-05 10:24   ` Simon Horman
2023-06-05 14:48     ` [p4tc-discussions] " Jamal Hadi Salim
2023-06-05 15:14       ` Simon Horman
2023-06-05 15:34         ` Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 13/28] p4tc: add action template create, update, delete, get, " Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 14/28] p4tc: add table " Jamal Hadi Salim
2023-06-02 21:54   ` Marcelo Ricardo Leitner
2023-06-03 14:15     ` Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 15/28] p4tc: add table entry create, update, get, delete, " Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 16/28] p4tc: add register create, update, delete, get, " Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 17/28] p4tc: add dynamic action commands Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 18/28] p4tc: add P4 classifier Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 19/28] selftests: tc-testing: add JSON introspection file directory for P4TC Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 20/28] selftests: tc-testing: Don't assume ENVIR is declared in local config Jamal Hadi Salim
2023-06-02 22:08   ` Marcelo Ricardo Leitner
2023-06-03 14:17     ` Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 21/28] selftests: tc-testing: add P4TC pipeline control path tdc tests Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 22/28] selftests: tc-testing: add P4TC metadata " Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 23/28] selftests: tc-testing: add P4TC action templates " Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 24/28] selftests: tc-testing: add P4TC table control path " Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 25/28] selftests: tc-testing: add P4TC table entries " Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 26/28] selftests: tc-testing: add P4TC register " Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 27/28] p4tc: add set of P4TC table lookup kfuncs Jamal Hadi Salim
2023-05-17 11:02 ` [PATCH RFC v2 net-next 28/28] MAINTAINERS: add p4tc entry Jamal Hadi Salim

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=CAAFAkD-N4qeYpPMOf7WFORjnt0CDztBzHF2aF2iD+qRNLdCqbA@mail.gmail.com \
    --to=hadi@mojatatu.com \
    --cc=Mahesh.Shirshyad@amd.com \
    --cc=Vipin.Jain@amd.com \
    --cc=dan.carpenter@linaro.org \
    --cc=davem@davemloft.net \
    --cc=deb.chatterjee@intel.com \
    --cc=edumazet@google.com \
    --cc=khalidm@nvidia.com \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=p4tc-discussions@netdevconf.info \
    --cc=pabeni@redhat.com \
    --cc=simon.horman@corigine.com \
    --cc=toke@redhat.com \
    --cc=tom@sipanda.io \
    --cc=tomasz.osinski@intel.com \
    --cc=xiyou.wangcong@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).