Thread (40 messages) 40 messages, 4 authors, 2016-08-31

Re: [RFCv2 03/16] net: cls_bpf: limit hardware offload by software-only flag

From: Jakub Kicinski <hidden>
Date: 2016-08-29 15:15:40

On Mon, 29 Aug 2016 17:06:34 +0200, Daniel Borkmann wrote:
On 08/26/2016 08:06 PM, Jakub Kicinski wrote:
quoted
[...]
@@ -372,6 +377,7 @@ static int cls_bpf_modify_existing(struct net *net, struct tcf_proto *tp,
  {
  	bool is_bpf, is_ebpf, have_exts = false;
  	struct tcf_exts exts;
+	u32 gen_flags = 0;
  	int ret;

  	is_bpf = tb[TCA_BPF_OPS_LEN] && tb[TCA_BPF_OPS];
@@ -396,8 +402,16 @@ static int cls_bpf_modify_existing(struct net *net, struct tcf_proto *tp,

  		have_exts = bpf_flags & TCA_BPF_FLAG_ACT_DIRECT;
  	}
+	if (tb[TCA_BPF_FLAGS_GEN]) {
+		gen_flags = nla_get_u32(tb[TCA_BPF_FLAGS_GEN]);
+		/* Make sure dump doesn't report back flags we don't handle */
+		gen_flags &= CLS_BPF_SUPPORTED_GEN_FLAGS;  
Instead of above rather ...

	if (gen_flags & ~CLS_BPF_SUPPORTED_GEN_FLAGS) {
		ret = -EINVAL;
		goto errout;
	}

... so that we can handle further additions properly like we do with
tb[TCA_BPF_FLAGS]?
Sure!
quoted
+		if (!tc_flags_valid(gen_flags))
+			return -EINVAL;  
Shouldn't we: goto errout?
Ugh, right!  I'm missing:

	tcf_exts_destroy(&exts);

Thanks!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help