aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/sock.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/sock.c')
-rw-r--r--net/core/sock.c17
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)
1217void sock_update_classid(struct sock *sk) 1226void 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