On Sat, Jun 09, 2018 at 10:35:48PM +0000, Fu, Qiaobin wrote:
...
> @@ -73,6 +100,7 @@ static int tcf_skbedit_init(struct net *net, struct nlattr 
> *nla,
>       struct tc_skbedit *parm;
>       struct tcf_skbedit *d;
>       u32 flags = 0, *priority = NULL, *mark = NULL, *mask = NULL;
> +     u64 *pure_flags = NULL;
>       u16 *queue_mapping = NULL, *ptype = NULL;
>       bool exists = false;
>       int ret = 0, err;
> @@ -114,6 +142,11 @@ static int tcf_skbedit_init(struct net *net, struct 
> nlattr *nla,
>               mask = nla_data(tb[TCA_SKBEDIT_MASK]);
>       }
>  
> +     if (tb[TCA_SKBEDIT_FLAGS] != NULL) {
> +             pure_flags = nla_data(tb[TCA_SKBEDIT_FLAGS]);
> +             flags |= *pure_flags;

It shouldn't allow setting flags other than the expected ones.

> +     }
> +
>       parm = nla_data(tb[TCA_SKBEDIT_PARMS]);
>  
>       exists = tcf_idr_check(tn, parm->index, a, bind);

Reply via email to