diff options
Diffstat (limited to 'net/core/sock.c')
-rw-r--r-- | net/core/sock.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index 8a146cfcc366..06286006a2cc 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -1074,6 +1074,15 @@ int sock_getsockopt(struct socket *sock, int level, int optname, | |||
1074 | case SO_NOFCS: | 1074 | case SO_NOFCS: |
1075 | v.val = sock_flag(sk, SOCK_NOFCS); | 1075 | v.val = sock_flag(sk, SOCK_NOFCS); |
1076 | break; | 1076 | break; |
1077 | case SO_BINDTODEVICE: | ||
1078 | v.val = sk->sk_bound_dev_if; | ||
1079 | break; | ||
1080 | case SO_GET_FILTER: | ||
1081 | len = sk_get_filter(sk, (struct sock_filter __user *)optval, len); | ||
1082 | if (len < 0) | ||
1083 | return len; | ||
1084 | |||
1085 | goto lenout; | ||
1077 | default: | 1086 | default: |
1078 | return -ENOPROTOOPT; | 1087 | return -ENOPROTOOPT; |
1079 | } | 1088 | } |
@@ -1214,13 +1223,11 @@ static void sk_prot_free(struct proto *prot, struct sock *sk) | |||
1214 | 1223 | ||
1215 | #ifdef CONFIG_CGROUPS | 1224 | #ifdef CONFIG_CGROUPS |
1216 | #if IS_ENABLED(CONFIG_NET_CLS_CGROUP) | 1225 | #if IS_ENABLED(CONFIG_NET_CLS_CGROUP) |
1217 | void sock_update_classid(struct sock *sk) | 1226 | void sock_update_classid(struct sock *sk, struct task_struct *task) |
1218 | { | 1227 | { |
1219 | u32 classid; | 1228 | u32 classid; |
1220 | 1229 | ||
1221 | rcu_read_lock(); /* doing current task, which cannot vanish. */ | 1230 | classid = task_cls_classid(task); |
1222 | classid = task_cls_classid(current); | ||
1223 | rcu_read_unlock(); | ||
1224 | if (classid != sk->sk_classid) | 1231 | if (classid != sk->sk_classid) |
1225 | sk->sk_classid = classid; | 1232 | sk->sk_classid = classid; |
1226 | } | 1233 | } |
@@ -1263,7 +1270,7 @@ struct sock *sk_alloc(struct net *net, int family, gfp_t priority, | |||
1263 | sock_net_set(sk, get_net(net)); | 1270 | sock_net_set(sk, get_net(net)); |
1264 | atomic_set(&sk->sk_wmem_alloc, 1); | 1271 | atomic_set(&sk->sk_wmem_alloc, 1); |
1265 | 1272 | ||
1266 | sock_update_classid(sk); | 1273 | sock_update_classid(sk, current); |
1267 | sock_update_netprioidx(sk, current); | 1274 | sock_update_netprioidx(sk, current); |
1268 | } | 1275 | } |
1269 | 1276 | ||