aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/act_api.h2
-rw-r--r--net/sched/act_api.c6
-rw-r--r--net/sched/act_police.c8
3 files changed, 6 insertions, 10 deletions
diff --git a/include/net/act_api.h b/include/net/act_api.h
index 152316b3f59a..788d8378e587 100644
--- a/include/net/act_api.h
+++ b/include/net/act_api.h
@@ -97,7 +97,7 @@ struct tc_action_ops {
97 int (*walk)(struct sk_buff *, struct netlink_callback *, int, struct tc_action *); 97 int (*walk)(struct sk_buff *, struct netlink_callback *, int, struct tc_action *);
98}; 98};
99 99
100struct tcf_common *tcf_hash_lookup(u32 index, struct tcf_hashinfo *hinfo); 100int tcf_hash_search(struct tc_action *a, u32 index);
101void tcf_hash_destroy(struct tcf_common *p, struct tcf_hashinfo *hinfo); 101void tcf_hash_destroy(struct tcf_common *p, struct tcf_hashinfo *hinfo);
102int tcf_hash_release(struct tcf_common *p, int bind, 102int tcf_hash_release(struct tcf_common *p, int bind,
103 struct tcf_hashinfo *hinfo); 103 struct tcf_hashinfo *hinfo);
diff --git a/net/sched/act_api.c b/net/sched/act_api.c
index b94825322d4d..72bdc7166345 100644
--- a/net/sched/act_api.c
+++ b/net/sched/act_api.c
@@ -156,7 +156,7 @@ static int tcf_generic_walker(struct sk_buff *skb, struct netlink_callback *cb,
156 } 156 }
157} 157}
158 158
159struct tcf_common *tcf_hash_lookup(u32 index, struct tcf_hashinfo *hinfo) 159static struct tcf_common *tcf_hash_lookup(u32 index, struct tcf_hashinfo *hinfo)
160{ 160{
161 struct tcf_common *p = NULL; 161 struct tcf_common *p = NULL;
162 struct hlist_head *head; 162 struct hlist_head *head;
@@ -170,7 +170,6 @@ struct tcf_common *tcf_hash_lookup(u32 index, struct tcf_hashinfo *hinfo)
170 170
171 return p; 171 return p;
172} 172}
173EXPORT_SYMBOL(tcf_hash_lookup);
174 173
175u32 tcf_hash_new_index(struct tcf_hashinfo *hinfo) 174u32 tcf_hash_new_index(struct tcf_hashinfo *hinfo)
176{ 175{
@@ -186,7 +185,7 @@ u32 tcf_hash_new_index(struct tcf_hashinfo *hinfo)
186} 185}
187EXPORT_SYMBOL(tcf_hash_new_index); 186EXPORT_SYMBOL(tcf_hash_new_index);
188 187
189static int tcf_hash_search(struct tc_action *a, u32 index) 188int tcf_hash_search(struct tc_action *a, u32 index)
190{ 189{
191 struct tcf_hashinfo *hinfo = a->ops->hinfo; 190 struct tcf_hashinfo *hinfo = a->ops->hinfo;
192 struct tcf_common *p = tcf_hash_lookup(index, hinfo); 191 struct tcf_common *p = tcf_hash_lookup(index, hinfo);
@@ -197,6 +196,7 @@ static int tcf_hash_search(struct tc_action *a, u32 index)
197 } 196 }
198 return 0; 197 return 0;
199} 198}
199EXPORT_SYMBOL(tcf_hash_search);
200 200
201struct tcf_common *tcf_hash_check(u32 index, struct tc_action *a, int bind) 201struct tcf_common *tcf_hash_check(u32 index, struct tc_action *a, int bind)
202{ 202{
diff --git a/net/sched/act_police.c b/net/sched/act_police.c
index c7093896cf14..1778209a332f 100644
--- a/net/sched/act_police.c
+++ b/net/sched/act_police.c
@@ -140,12 +140,8 @@ static int tcf_act_police_locate(struct net *net, struct nlattr *nla,
140 parm = nla_data(tb[TCA_POLICE_TBF]); 140 parm = nla_data(tb[TCA_POLICE_TBF]);
141 141
142 if (parm->index) { 142 if (parm->index) {
143 struct tcf_common *pc; 143 if (tcf_hash_search(a, parm->index)) {
144 144 police = to_police(a->priv);
145 pc = tcf_hash_lookup(parm->index, hinfo);
146 if (pc != NULL) {
147 a->priv = pc;
148 police = to_police(pc);
149 if (bind) { 145 if (bind) {
150 police->tcf_bindcnt += 1; 146 police->tcf_bindcnt += 1;
151 police->tcf_refcnt += 1; 147 police->tcf_refcnt += 1;