]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/sched/act_api.c
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
[karo-tx-linux.git] / net / sched / act_api.c
index d8e0171d9a4b8a14cd2c7241c173d3647164430e..972378f47f3cfd2ef03b33ac3a3a5ea7801e7afe 100644 (file)
@@ -153,7 +153,7 @@ int tcf_generic_walker(struct sk_buff *skb, struct netlink_callback *cb,
        } else if (type == RTM_GETACTION) {
                return tcf_dump_walker(skb, cb, a, hinfo);
        } else {
-               printk("tcf_generic_walker: unknown action %d\n", type);
+               WARN(1, "tcf_generic_walker: unknown action %d\n", type);
                return -EINVAL;
        }
 }
@@ -403,8 +403,9 @@ void tcf_action_destroy(struct tc_action *act, int bind)
                                module_put(a->ops->owner);
                        act = act->next;
                        kfree(a);
-               } else { /*FIXME: Remove later - catch insertion bugs*/
-                       printk("tcf_action_destroy: BUG? destroying NULL ops\n");
+               } else {
+                       /*FIXME: Remove later - catch insertion bugs*/
+                       WARN(1, "tcf_action_destroy: BUG? destroying NULL ops\n");
                        act = act->next;
                        kfree(a);
                }
@@ -668,7 +669,8 @@ nlmsg_failure:
 }
 
 static int
-act_get_notify(u32 pid, struct nlmsghdr *n, struct tc_action *a, int event)
+act_get_notify(struct net *net, u32 pid, struct nlmsghdr *n,
+              struct tc_action *a, int event)
 {
        struct sk_buff *skb;
 
@@ -680,7 +682,7 @@ act_get_notify(u32 pid, struct nlmsghdr *n, struct tc_action *a, int event)
                return -EINVAL;
        }
 
-       return rtnl_unicast(skb, &init_net, pid);
+       return rtnl_unicast(skb, net, pid);
 }
 
 static struct tc_action *
@@ -743,14 +745,15 @@ static struct tc_action *create_a(int i)
 
        act = kzalloc(sizeof(*act), GFP_KERNEL);
        if (act == NULL) {
-               printk("create_a: failed to alloc!\n");
+               pr_debug("create_a: failed to alloc!\n");
                return NULL;
        }
        act->order = i;
        return act;
 }
 
-static int tca_action_flush(struct nlattr *nla, struct nlmsghdr *n, u32 pid)
+static int tca_action_flush(struct net *net, struct nlattr *nla,
+                           struct nlmsghdr *n, u32 pid)
 {
        struct sk_buff *skb;
        unsigned char *b;
@@ -764,13 +767,13 @@ static int tca_action_flush(struct nlattr *nla, struct nlmsghdr *n, u32 pid)
        int err = -ENOMEM;
 
        if (a == NULL) {
-               printk("tca_action_flush: couldnt create tc_action\n");
+               pr_debug("tca_action_flush: couldnt create tc_action\n");
                return err;
        }
 
        skb = alloc_skb(NLMSG_GOODSIZE, GFP_KERNEL);
        if (!skb) {
-               printk("tca_action_flush: failed skb alloc\n");
+               pr_debug("tca_action_flush: failed skb alloc\n");
                kfree(a);
                return err;
        }
@@ -809,7 +812,7 @@ static int tca_action_flush(struct nlattr *nla, struct nlmsghdr *n, u32 pid)
        nlh->nlmsg_flags |= NLM_F_ROOT;
        module_put(a->ops->owner);
        kfree(a);
-       err = rtnetlink_send(skb, &init_net, pid, RTNLGRP_TC, n->nlmsg_flags&NLM_F_ECHO);
+       err = rtnetlink_send(skb, net, pid, RTNLGRP_TC, n->nlmsg_flags&NLM_F_ECHO);
        if (err > 0)
                return 0;
 
@@ -826,7 +829,8 @@ noflush_out:
 }
 
 static int
-tca_action_gd(struct nlattr *nla, struct nlmsghdr *n, u32 pid, int event)
+tca_action_gd(struct net *net, struct nlattr *nla, struct nlmsghdr *n,
+             u32 pid, int event)
 {
        int i, ret;
        struct nlattr *tb[TCA_ACT_MAX_PRIO+1];
@@ -838,7 +842,7 @@ tca_action_gd(struct nlattr *nla, struct nlmsghdr *n, u32 pid, int event)
 
        if (event == RTM_DELACTION && n->nlmsg_flags&NLM_F_ROOT) {
                if (tb[1] != NULL)
-                       return tca_action_flush(tb[1], n, pid);
+                       return tca_action_flush(net, tb[1], n, pid);
                else
                        return -EINVAL;
        }
@@ -859,7 +863,7 @@ tca_action_gd(struct nlattr *nla, struct nlmsghdr *n, u32 pid, int event)
        }
 
        if (event == RTM_GETACTION)
-               ret = act_get_notify(pid, n, head, event);
+               ret = act_get_notify(net, pid, n, head, event);
        else { /* delete */
                struct sk_buff *skb;
 
@@ -878,7 +882,7 @@ tca_action_gd(struct nlattr *nla, struct nlmsghdr *n, u32 pid, int event)
 
                /* now do the delete */
                tcf_action_destroy(head, 0);
-               ret = rtnetlink_send(skb, &init_net, pid, RTNLGRP_TC,
+               ret = rtnetlink_send(skb, net, pid, RTNLGRP_TC,
                                     n->nlmsg_flags&NLM_F_ECHO);
                if (ret > 0)
                        return 0;
@@ -889,8 +893,8 @@ err:
        return ret;
 }
 
-static int tcf_add_notify(struct tc_action *a, u32 pid, u32 seq, int event,
-                         u16 flags)
+static int tcf_add_notify(struct net *net, struct tc_action *a,
+                         u32 pid, u32 seq, int event, u16 flags)
 {
        struct tcamsg *t;
        struct nlmsghdr *nlh;
@@ -923,7 +927,7 @@ static int tcf_add_notify(struct tc_action *a, u32 pid, u32 seq, int event,
        nlh->nlmsg_len = skb_tail_pointer(skb) - b;
        NETLINK_CB(skb).dst_group = RTNLGRP_TC;
 
-       err = rtnetlink_send(skb, &init_net, pid, RTNLGRP_TC, flags&NLM_F_ECHO);
+       err = rtnetlink_send(skb, net, pid, RTNLGRP_TC, flags&NLM_F_ECHO);
        if (err > 0)
                err = 0;
        return err;
@@ -936,7 +940,8 @@ nlmsg_failure:
 
 
 static int
-tcf_action_add(struct nlattr *nla, struct nlmsghdr *n, u32 pid, int ovr)
+tcf_action_add(struct net *net, struct nlattr *nla, struct nlmsghdr *n,
+              u32 pid, int ovr)
 {
        int ret = 0;
        struct tc_action *act;
@@ -954,7 +959,7 @@ tcf_action_add(struct nlattr *nla, struct nlmsghdr *n, u32 pid, int ovr)
        /* dump then free all the actions after update; inserted policy
         * stays intact
         * */
-       ret = tcf_add_notify(act, pid, seq, RTM_NEWACTION, n->nlmsg_flags);
+       ret = tcf_add_notify(net, act, pid, seq, RTM_NEWACTION, n->nlmsg_flags);
        for (a = act; a; a = act) {
                act = a->next;
                kfree(a);
@@ -970,15 +975,12 @@ static int tc_ctl_action(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
        u32 pid = skb ? NETLINK_CB(skb).pid : 0;
        int ret = 0, ovr = 0;
 
-       if (!net_eq(net, &init_net))
-               return -EINVAL;
-
        ret = nlmsg_parse(n, sizeof(struct tcamsg), tca, TCA_ACT_MAX, NULL);
        if (ret < 0)
                return ret;
 
        if (tca[TCA_ACT_TAB] == NULL) {
-               printk("tc_ctl_action: received NO action attribs\n");
+               pr_notice("tc_ctl_action: received NO action attribs\n");
                return -EINVAL;
        }
 
@@ -995,15 +997,17 @@ static int tc_ctl_action(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
                if (n->nlmsg_flags&NLM_F_REPLACE)
                        ovr = 1;
 replay:
-               ret = tcf_action_add(tca[TCA_ACT_TAB], n, pid, ovr);
+               ret = tcf_action_add(net, tca[TCA_ACT_TAB], n, pid, ovr);
                if (ret == -EAGAIN)
                        goto replay;
                break;
        case RTM_DELACTION:
-               ret = tca_action_gd(tca[TCA_ACT_TAB], n, pid, RTM_DELACTION);
+               ret = tca_action_gd(net, tca[TCA_ACT_TAB], n,
+                                   pid, RTM_DELACTION);
                break;
        case RTM_GETACTION:
-               ret = tca_action_gd(tca[TCA_ACT_TAB], n, pid, RTM_GETACTION);
+               ret = tca_action_gd(net, tca[TCA_ACT_TAB], n,
+                                   pid, RTM_GETACTION);
                break;
        default:
                BUG();
@@ -1043,7 +1047,6 @@ find_dump_kind(const struct nlmsghdr *n)
 static int
 tc_dump_action(struct sk_buff *skb, struct netlink_callback *cb)
 {
-       struct net *net = sock_net(skb->sk);
        struct nlmsghdr *nlh;
        unsigned char *b = skb_tail_pointer(skb);
        struct nlattr *nest;
@@ -1053,11 +1056,8 @@ tc_dump_action(struct sk_buff *skb, struct netlink_callback *cb)
        struct tcamsg *t = (struct tcamsg *) NLMSG_DATA(cb->nlh);
        struct nlattr *kind = find_dump_kind(cb->nlh);
 
-       if (!net_eq(net, &init_net))
-               return 0;
-
        if (kind == NULL) {
-               printk("tc_dump_action: action bad kind\n");
+               pr_info("tc_dump_action: action bad kind\n");
                return 0;
        }
 
@@ -1070,7 +1070,8 @@ tc_dump_action(struct sk_buff *skb, struct netlink_callback *cb)
        a.ops = a_o;
 
        if (a_o->walk == NULL) {
-               printk("tc_dump_action: %s !capable of dumping table\n", a_o->kind);
+               WARN(1, "tc_dump_action: %s !capable of dumping table\n",
+                    a_o->kind);
                goto nla_put_failure;
        }