Re: [PATCH v0 3/4] cgroup: net_cls: Pass in task to sock_update_classid()
flat view
From: Daniel Wagner <hidden>
Date: 2012-10-17 15:54:40
Also in:
cgroups
On 17.10.2012 15:37, Eric Dumazet wrote:
On Wed, 2012-10-17 at 15:04 +0200, Daniel Wagner wrote:quoted
From: Daniel Wagner <redacted> sock_update_classid() assumes that the update operation always are applied on the current task. sock_update_classid() needs to know on which tasks to work on in order to be able to migrate task between cgroups using the struct cgroup_subsys attach() callback....quoted
-extern void sock_update_classid(struct sock *sk); +extern void sock_update_classid(struct sock *sk, struct task_struct *task); #if IS_BUILTIN(CONFIG_NET_CLS_CGROUP) static inline u32 task_cls_classid(struct task_struct *p)diff --git a/net/core/sock.c b/net/core/sock.c index 8a146cf..68c2f3b 100644 --- a/net/core/sock.c +++ b/net/core/sock.c@@ -1214,12 +1214,12 @@ static void sk_prot_free(struct proto *prot, struct sock *sk) #ifdef CONFIG_CGROUPS #if IS_ENABLED(CONFIG_NET_CLS_CGROUP) -void sock_update_classid(struct sock *sk) +void sock_update_classid(struct sock *sk, struct task_struct *task) { u32 classid; rcu_read_lock(); /* doing current task, which cannot vanish. */ - classid = task_cls_classid(current); + classid = task_cls_classid(task); rcu_read_unlock();Comment is now misleading (since task might not be current) and rcu_read_lock()/rcu_read_unlock() protects nothing here, but avoid a lockdep splat... Hey task_cls_classid() has its own rcu protection since commit 3fb5a991916091a908d (cls_cgroup: Fix rcu lockdep warning) So we can safely revert Paul commit (1144182a8757f2a1) (We no longer need rcu_read_lock/unlock here)
Good point. Will update the series accordingly.
(BTW net-next is not opened yet, its content outdated, although I like your patch series !)
I still have not figured all details on the patch submission procedure. Sorry about that. The time to send patches for net-next will be annonced by David, is this correct?