cls_cgroup: clean up for cgroup part

- It's better to use container_of() instead of casting cgroup_subsys_state *
  to cgroup_cls_state *.
- Add helper function task_cls_state().
- Rename net_cls_state() to cgrp_cls_state().

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Li Zefan 2008-12-29 19:39:03 -08:00 committed by David S. Miller
parent 2f068bf871
commit 8e8ba85417
1 changed files with 14 additions and 9 deletions

View File

@ -24,10 +24,16 @@ struct cgroup_cls_state
u32 classid;
};
static inline struct cgroup_cls_state *net_cls_state(struct cgroup *cgrp)
static inline struct cgroup_cls_state *cgrp_cls_state(struct cgroup *cgrp)
{
return (struct cgroup_cls_state *)
cgroup_subsys_state(cgrp, net_cls_subsys_id);
return container_of(cgroup_subsys_state(cgrp, net_cls_subsys_id),
struct cgroup_cls_state, css);
}
static inline struct cgroup_cls_state *task_cls_state(struct task_struct *p)
{
return container_of(task_subsys_state(p, net_cls_subsys_id),
struct cgroup_cls_state, css);
}
static struct cgroup_subsys_state *cgrp_create(struct cgroup_subsys *ss,
@ -39,19 +45,19 @@ static struct cgroup_subsys_state *cgrp_create(struct cgroup_subsys *ss,
return ERR_PTR(-ENOMEM);
if (cgrp->parent)
cs->classid = net_cls_state(cgrp->parent)->classid;
cs->classid = cgrp_cls_state(cgrp->parent)->classid;
return &cs->css;
}
static void cgrp_destroy(struct cgroup_subsys *ss, struct cgroup *cgrp)
{
kfree(net_cls_state(cgrp));
kfree(cgrp_cls_state(cgrp));
}
static u64 read_classid(struct cgroup *cgrp, struct cftype *cft)
{
return net_cls_state(cgrp)->classid;
return cgrp_cls_state(cgrp)->classid;
}
static int write_classid(struct cgroup *cgrp, struct cftype *cft, u64 value)
@ -59,7 +65,7 @@ static int write_classid(struct cgroup *cgrp, struct cftype *cft, u64 value)
if (!cgroup_lock_live_group(cgrp))
return -ENODEV;
net_cls_state(cgrp)->classid = (u32) value;
cgrp_cls_state(cgrp)->classid = (u32) value;
cgroup_unlock();
@ -115,8 +121,7 @@ static int cls_cgroup_classify(struct sk_buff *skb, struct tcf_proto *tp,
return -1;
rcu_read_lock();
cs = (struct cgroup_cls_state *) task_subsys_state(current,
net_cls_subsys_id);
cs = task_cls_state(current);
if (cs->classid && tcf_em_tree_match(skb, &head->ematches, NULL)) {
res->classid = cs->classid;
res->class = 0;