diff options
author | Daniel Borkmann <dborkman@redhat.com> | 2015-01-22 10:58:18 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-01-26 16:08:55 -0800 |
commit | 1c1bc6bdb7f529eb3383b6e34a0ea327d7e9f615 (patch) | |
tree | a15d65097742cdd38f9702d07f124c6aae0867e2 | |
parent | fa067467d84b9ebf6886383fe79715f3df90f255 (diff) | |
download | linux-stable-1c1bc6bdb7f529eb3383b6e34a0ea327d7e9f615.tar.gz linux-stable-1c1bc6bdb7f529eb3383b6e34a0ea327d7e9f615.tar.bz2 linux-stable-1c1bc6bdb7f529eb3383b6e34a0ea327d7e9f615.zip |
net: cls_basic: return from walking on match in basic_get
As soon as we've found a matching handle in basic_get(), we can
return it. There's no need to continue walking until the end of
a filter chain, since they are unique anyway.
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Acked-by: Jiri Pirko <jiri@resnulli.us>
Cc: Thomas Graf <tgraf@suug.ch>
Acked-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/sched/cls_basic.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/sched/cls_basic.c b/net/sched/cls_basic.c index 5aed341406c2..fc399db86f11 100644 --- a/net/sched/cls_basic.c +++ b/net/sched/cls_basic.c @@ -65,9 +65,12 @@ static unsigned long basic_get(struct tcf_proto *tp, u32 handle) if (head == NULL) return 0UL; - list_for_each_entry(f, &head->flist, link) - if (f->handle == handle) + list_for_each_entry(f, &head->flist, link) { + if (f->handle == handle) { l = (unsigned long) f; + break; + } + } return l; } |