diff options
Diffstat (limited to 'net/core/sock.c')
-rw-r--r-- | net/core/sock.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index ef30e9d286e7..7d99e13148e6 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -1078,8 +1078,11 @@ static void sk_prot_free(struct proto *prot, struct sock *sk) | |||
1078 | #ifdef CONFIG_CGROUPS | 1078 | #ifdef CONFIG_CGROUPS |
1079 | void sock_update_classid(struct sock *sk) | 1079 | void sock_update_classid(struct sock *sk) |
1080 | { | 1080 | { |
1081 | u32 classid = task_cls_classid(current); | 1081 | u32 classid; |
1082 | 1082 | ||
1083 | rcu_read_lock(); /* doing current task, which cannot vanish. */ | ||
1084 | classid = task_cls_classid(current); | ||
1085 | rcu_read_unlock(); | ||
1083 | if (classid && classid != sk->sk_classid) | 1086 | if (classid && classid != sk->sk_classid) |
1084 | sk->sk_classid = classid; | 1087 | sk->sk_classid = classid; |
1085 | } | 1088 | } |