All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Abeni <pabeni@redhat.com>
To: Jamal Hadi Salim <jhs@mojatatu.com>, netdev@vger.kernel.org
Cc: Cong Wang <xiyou.wangcong@gmail.com>,
	Jiri Pirko <jiri@resnulli.us>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>,
	Eyal Birger <eyal.birger@gmail.com>,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH net-next v5 1/4] net/sched: user-space can't set unknown tcfa_action values
Date: Tue, 31 Jul 2018 11:41:26 +0200	[thread overview]
Message-ID: <b36ee3a23d828c304e0bbcb872499600ad9bf162.camel@redhat.com> (raw)
In-Reply-To: <ab896aa9-9fa5-693c-2c56-144f439e242e@mojatatu.com>

On Mon, 2018-07-30 at 15:31 -0400, Jamal Hadi Salim wrote:
> On 30/07/18 12:41 PM, Paolo Abeni wrote:
> > On Mon, 2018-07-30 at 10:03 -0400, Jamal Hadi Salim wrote:
> > > On 30/07/18 08:30 AM, Paolo Abeni wrote:
> > > >    	}
> > > >    
> > > > +	if (!tcf_action_valid(a->tcfa_action)) {
> > > > +		NL_SET_ERR_MSG(extack, "invalid action value, using TC_ACT_UNSPEC instead");
> > > > +		a->tcfa_action = TC_ACT_UNSPEC;
> > > > +	}
> > > > +
> > > >    	return a;
> > > >    
> > > 
> > > 
> > > I think it would make a lot more sense to just reject the entry than
> > > changing it underneath the user to a default value. Least element of
> > > suprise.
> > 
> > I fear that would break existing (bad) users ?!? This way, such users
> > are notified they are doing something uncorrect, but still continue to
> > work.
> 
> 
> By "bad users" I think you mean someone setting a policy expecting
> one behavior but getting a different one? 

Generally speaking I thought about user-space pushing to the kernel
some uninitialized/random value for 'tcfa_action'.

> If yes, that policy was
> already wrong/buggy. As an example, if i configured:
> 
> match xxx action foo action goo action bar action gah
> 
> where action goo has a bad opcode
> If  you "fix it"  with TC_ACT_UNSPEC then basically the above
> policy is now equivalent to:
> 
> match xxx action foo action goo
> 
> Infact if there was a lower prio rule in the chain
> then lookup will continue there and produce even stranger
> results.

I see. 

Before this patch, the kernel exposed the same behaviour for negative
value of 'bar', while, for positive 'bar' values, the overall behaviour
was more complex (some classifier always stops with unknown positive
action value, others go to lower prio).

Overall, the kernel behavior should be more well-defined now, but yes,
there is a change of behavior under some circumstances.

What about instead mapping undefined/unknown actions value to TC_ACT_OK
(still at initialization time)? this is what is already done by
tcf_action_exec() for faulty opcodes/graphs and by tcf_ipt() and would
handle the above example more conistently.

Cheers,

Paolo

  reply	other threads:[~2018-07-31 11:20 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-30 12:30 [PATCH net-next v5 0/4] TC: refactor act_mirred packets re-injection Paolo Abeni
2018-07-30 12:30 ` [PATCH net-next v5 1/4] net/sched: user-space can't set unknown tcfa_action values Paolo Abeni
2018-07-30 12:36   ` Jiri Pirko
2018-07-30 14:03   ` Jamal Hadi Salim
2018-07-30 14:21     ` Jiri Pirko
2018-07-30 16:41     ` Paolo Abeni
2018-07-30 19:31       ` Jamal Hadi Salim
2018-07-31  9:41         ` Paolo Abeni [this message]
2018-07-31 13:53           ` Jamal Hadi Salim
2018-07-31 14:40             ` Paolo Abeni
2018-08-01 14:34               ` Jamal Hadi Salim
2018-07-30 12:30 ` [PATCH net-next v5 2/4] tc/act: remove unneeded RCU lock in action callback Paolo Abeni
2018-07-30 12:30 ` [PATCH net-next v5 3/4] net/tc: introduce TC_ACT_REINSERT Paolo Abeni
2018-07-30 12:40   ` Jiri Pirko
2018-07-30 16:31     ` David Miller
2018-07-30 16:49       ` Jiri Pirko
2018-07-30 16:56         ` David Miller
2018-07-30 12:30 ` [PATCH net-next v5 4/4] act_mirred: use TC_ACT_REINSERT when possible Paolo Abeni
2018-07-30 12:42   ` Jiri Pirko
2018-07-30 16:31 ` [PATCH net-next v5 0/4] TC: refactor act_mirred packets re-injection David Miller

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=b36ee3a23d828c304e0bbcb872499600ad9bf162.camel@redhat.com \
    --to=pabeni@redhat.com \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=eyal.birger@gmail.com \
    --cc=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=marcelo.leitner@gmail.com \
    --cc=netdev@vger.kernel.org \
    --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 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.