diff options
author | Neil Horman <nhorman@tuxdriver.com> | 2012-02-10 00:43:38 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-02-10 15:08:57 -0500 |
commit | 2b73bc65e2771372c818db7955709c8caedbf8b9 (patch) | |
tree | 4cd1bfe8284d9266d45f5de11e3f4d8fbfcdbf4f /net/core/sock.c | |
parent | f5c38208d32412d72b97a4f0d44af0eb39feb20b (diff) |
netprio_cgroup: fix wrong memory access when NETPRIO_CGROUP=m
When the netprio_cgroup module is not loaded, net_prio_subsys_id
is -1, and so sock_update_prioidx() accesses cgroup_subsys array
with negative index subsys[-1].
Make the code resembles cls_cgroup code, which is bug free.
Origionally-authored-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: "David S. Miller" <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/sock.c')
-rw-r--r-- | net/core/sock.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index 3e81fd2e3c75..02f8dfe320b7 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -1171,13 +1171,10 @@ EXPORT_SYMBOL(sock_update_classid); | |||
1171 | 1171 | ||
1172 | void sock_update_netprioidx(struct sock *sk) | 1172 | void sock_update_netprioidx(struct sock *sk) |
1173 | { | 1173 | { |
1174 | struct cgroup_netprio_state *state; | ||
1175 | if (in_interrupt()) | 1174 | if (in_interrupt()) |
1176 | return; | 1175 | return; |
1177 | rcu_read_lock(); | 1176 | |
1178 | state = task_netprio_state(current); | 1177 | sk->sk_cgrp_prioidx = task_netprioidx(current); |
1179 | sk->sk_cgrp_prioidx = state ? state->prioidx : 0; | ||
1180 | rcu_read_unlock(); | ||
1181 | } | 1178 | } |
1182 | EXPORT_SYMBOL_GPL(sock_update_netprioidx); | 1179 | EXPORT_SYMBOL_GPL(sock_update_netprioidx); |
1183 | #endif | 1180 | #endif |