diff options
Diffstat (limited to 'net/sched/cls_cgroup.c')
| -rw-r--r-- | net/sched/cls_cgroup.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/net/sched/cls_cgroup.c b/net/sched/cls_cgroup.c index 91a3db4a76f8..cc29b44b1500 100644 --- a/net/sched/cls_cgroup.c +++ b/net/sched/cls_cgroup.c | |||
| @@ -104,8 +104,7 @@ static int cls_cgroup_classify(struct sk_buff *skb, struct tcf_proto *tp, | |||
| 104 | struct tcf_result *res) | 104 | struct tcf_result *res) |
| 105 | { | 105 | { |
| 106 | struct cls_cgroup_head *head = tp->root; | 106 | struct cls_cgroup_head *head = tp->root; |
| 107 | struct cgroup_cls_state *cs; | 107 | u32 classid; |
| 108 | int ret = 0; | ||
| 109 | 108 | ||
| 110 | /* | 109 | /* |
| 111 | * Due to the nature of the classifier it is required to ignore all | 110 | * Due to the nature of the classifier it is required to ignore all |
| @@ -121,17 +120,18 @@ static int cls_cgroup_classify(struct sk_buff *skb, struct tcf_proto *tp, | |||
| 121 | return -1; | 120 | return -1; |
| 122 | 121 | ||
| 123 | rcu_read_lock(); | 122 | rcu_read_lock(); |
| 124 | cs = task_cls_state(current); | 123 | classid = task_cls_state(current)->classid; |
| 125 | if (cs->classid && tcf_em_tree_match(skb, &head->ematches, NULL)) { | ||
| 126 | res->classid = cs->classid; | ||
| 127 | res->class = 0; | ||
| 128 | ret = tcf_exts_exec(skb, &head->exts, res); | ||
| 129 | } else | ||
| 130 | ret = -1; | ||
| 131 | |||
| 132 | rcu_read_unlock(); | 124 | rcu_read_unlock(); |
| 133 | 125 | ||
| 134 | return ret; | 126 | if (!classid) |
| 127 | return -1; | ||
| 128 | |||
| 129 | if (!tcf_em_tree_match(skb, &head->ematches, NULL)) | ||
| 130 | return -1; | ||
| 131 | |||
| 132 | res->classid = classid; | ||
| 133 | res->class = 0; | ||
| 134 | return tcf_exts_exec(skb, &head->exts, res); | ||
| 135 | } | 135 | } |
| 136 | 136 | ||
| 137 | static unsigned long cls_cgroup_get(struct tcf_proto *tp, u32 handle) | 137 | static unsigned long cls_cgroup_get(struct tcf_proto *tp, u32 handle) |
