summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Borkmann <dborkman@redhat.com>2015-01-22 10:58:18 +0100
committerDavid S. Miller <davem@davemloft.net>2015-01-26 16:08:55 -0800
commit1c1bc6bdb7f529eb3383b6e34a0ea327d7e9f615 (patch)
treea15d65097742cdd38f9702d07f124c6aae0867e2
parentfa067467d84b9ebf6886383fe79715f3df90f255 (diff)
downloadlinux-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.c7
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;
}