diff options
| author | Patrick McHardy <kaber@trash.net> | 2004-11-23 07:50:00 -0800 |
|---|---|---|
| committer | David S. Miller <davem@nuts.davemloft.net> | 2004-11-23 07:50:00 -0800 |
| commit | 6d141d440aa4296db4b0d89af3c2fb1e83c9d50a (patch) | |
| tree | 88b52968c845f2d7252049972fe1fb01ecc9f252 /include/net | |
| parent | 8fb8f6c69cca3e4dad3da202c120b328b803f19b (diff) | |
[PKT_SCHED]: Clean up tcf_action_init memory handling
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
| -rw-r--r-- | include/net/act_api.h | 4 | ||||
| -rw-r--r-- | include/net/pkt_cls.h | 26 |
2 files changed, 8 insertions, 22 deletions
diff --git a/include/net/act_api.h b/include/net/act_api.h index ea9c442c1a55..c26fc418b17c 100644 --- a/include/net/act_api.h +++ b/include/net/act_api.h @@ -87,8 +87,8 @@ extern int tcf_register_action(struct tc_action_ops *a); extern int tcf_unregister_action(struct tc_action_ops *a); extern void tcf_action_destroy(struct tc_action *a, int bind); extern int tcf_action_exec(struct sk_buff *skb, struct tc_action *a, struct tcf_result *res); -extern int tcf_action_init(struct rtattr *rta, struct rtattr *est, struct tc_action *a,char *n, int ovr, int bind); -extern int tcf_action_init_1(struct rtattr *rta, struct rtattr *est, struct tc_action *a,char *n, int ovr, int bind); +extern struct tc_action *tcf_action_init(struct rtattr *rta, struct rtattr *est, char *n, int ovr, int bind, int *err); +extern struct tc_action *tcf_action_init_1(struct rtattr *rta, struct rtattr *est, char *n, int ovr, int bind, int *err); extern int tcf_action_dump(struct sk_buff *skb, struct tc_action *a, int, int); extern int tcf_action_dump_old(struct sk_buff *skb, struct tc_action *a, int, int); extern int tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int, int); diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 3dd20562a196..973680c7537e 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -70,17 +70,10 @@ tcf_change_act_police(struct tcf_proto *tp, struct tc_action **action, int ret; struct tc_action *act; - act = kmalloc(sizeof(*act), GFP_KERNEL); - if (NULL == act) - return -ENOMEM; - memset(act, 0, sizeof(*act)); - - ret = tcf_action_init_1(act_police_tlv, rate_tlv, act, "police", - TCA_ACT_NOREPLACE, TCA_ACT_BIND); - if (ret < 0) { - tcf_action_destroy(act, TCA_ACT_UNBIND); + act = tcf_action_init_1(act_police_tlv, rate_tlv, "police", + TCA_ACT_NOREPLACE, TCA_ACT_BIND, &ret); + if (act == NULL) return ret; - } act->type = TCA_OLD_COMPAT; @@ -103,17 +96,10 @@ tcf_change_act(struct tcf_proto *tp, struct tc_action **action, int ret; struct tc_action *act; - act = kmalloc(sizeof(*act), GFP_KERNEL); - if (NULL == act) - return -ENOMEM; - memset(act, 0, sizeof(*act)); - - ret = tcf_action_init(act_tlv, rate_tlv, act, NULL, - TCA_ACT_NOREPLACE, TCA_ACT_BIND); - if (ret < 0) { - tcf_action_destroy(act, TCA_ACT_UNBIND); + act = tcf_action_init(act_tlv, rate_tlv, NULL, + TCA_ACT_NOREPLACE, TCA_ACT_BIND, &ret); + if (act == NULL) return ret; - } if (*action) { tcf_tree_lock(tp); |
