From 9d73423bd9251dfa732fe0118243cbb7a2ae5cd3 Mon Sep 17 00:00:00 2001 From: Li Zefan Date: Thu, 2 Sep 2010 15:42:43 +0000 Subject: [PATCH] --- yaml --- r: 210571 b: refs/heads/master c: 3fb5a991916091a908d53608a5899240039fb51e h: refs/heads/master i: 210569: c36352fd69ddd3e25e947657c1c463887ca612c5 210567: 442fa3ccd032c791b1351e9653f1193eac06bd9a v: v3 --- [refs] | 2 +- trunk/include/net/cls_cgroup.h | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 7f8277b66bb7..892fa27f9f9e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 323f30b361b2e6febb9065ab4a1a5298acb66ac1 +refs/heads/master: 3fb5a991916091a908d53608a5899240039fb51e diff --git a/trunk/include/net/cls_cgroup.h b/trunk/include/net/cls_cgroup.h index 726cc3536409..ef6c24a529e1 100644 --- a/trunk/include/net/cls_cgroup.h +++ b/trunk/include/net/cls_cgroup.h @@ -27,11 +27,17 @@ struct cgroup_cls_state #ifdef CONFIG_NET_CLS_CGROUP static inline u32 task_cls_classid(struct task_struct *p) { + int classid; + if (in_interrupt()) return 0; - return container_of(task_subsys_state(p, net_cls_subsys_id), - struct cgroup_cls_state, css)->classid; + rcu_read_lock(); + classid = container_of(task_subsys_state(p, net_cls_subsys_id), + struct cgroup_cls_state, css)->classid; + rcu_read_unlock(); + + return classid; } #else extern int net_cls_subsys_id;