netprio_cgroup: remove task_struct parameter from sock_update_netprio()
[pandora-kernel.git] / net / core / sock.c
index bc131d4..d4f4cea 100644 (file)
@@ -186,8 +186,10 @@ void mem_cgroup_sockets_destroy(struct mem_cgroup *memcg)
 static struct lock_class_key af_family_keys[AF_MAX];
 static struct lock_class_key af_family_slock_keys[AF_MAX];
 
+#if defined(CONFIG_MEMCG_KMEM)
 struct static_key memcg_socket_limit_enabled;
 EXPORT_SYMBOL(memcg_socket_limit_enabled);
+#endif
 
 /*
  * Make lock validator output more readable. (we pre-construct these
@@ -665,6 +667,9 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
        case SO_REUSEADDR:
                sk->sk_reuse = (valbool ? SK_CAN_REUSE : SK_NO_REUSE);
                break;
+       case SO_REUSEPORT:
+               sk->sk_reuseport = valbool;
+               break;
        case SO_TYPE:
        case SO_PROTOCOL:
        case SO_DOMAIN:
@@ -861,6 +866,13 @@ set_rcvbuf:
                ret = sk_detach_filter(sk);
                break;
 
+       case SO_LOCK_FILTER:
+               if (sock_flag(sk, SOCK_FILTER_LOCKED) && !valbool)
+                       ret = -EPERM;
+               else
+                       sock_valbool_flag(sk, SOCK_FILTER_LOCKED, valbool);
+               break;
+
        case SO_PASSSEC:
                if (valbool)
                        set_bit(SOCK_PASSSEC, &sock->flags);
@@ -895,6 +907,10 @@ set_rcvbuf:
                sock_valbool_flag(sk, SOCK_NOFCS, valbool);
                break;
 
+       case SO_SELECT_ERR_QUEUE:
+               sock_valbool_flag(sk, SOCK_SELECT_ERR_QUEUE, valbool);
+               break;
+
        default:
                ret = -ENOPROTOOPT;
                break;
@@ -965,6 +981,10 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
                v.val = sk->sk_reuse;
                break;
 
+       case SO_REUSEPORT:
+               v.val = sk->sk_reuseport;
+               break;
+
        case SO_KEEPALIVE:
                v.val = sock_flag(sk, SOCK_KEEPOPEN);
                break;
@@ -1140,6 +1160,14 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
 
                goto lenout;
 
+       case SO_LOCK_FILTER:
+               v.val = sock_flag(sk, SOCK_FILTER_LOCKED);
+               break;
+
+       case SO_SELECT_ERR_QUEUE:
+               v.val = sock_flag(sk, SOCK_SELECT_ERR_QUEUE);
+               break;
+
        default:
                return -ENOPROTOOPT;
        }
@@ -1278,13 +1306,12 @@ static void sk_prot_free(struct proto *prot, struct sock *sk)
        module_put(owner);
 }
 
-#ifdef CONFIG_CGROUPS
 #if IS_ENABLED(CONFIG_NET_CLS_CGROUP)
-void sock_update_classid(struct sock *sk, struct task_struct *task)
+void sock_update_classid(struct sock *sk)
 {
        u32 classid;
 
-       classid = task_cls_classid(task);
+       classid = task_cls_classid(current);
        if (classid != sk->sk_classid)
                sk->sk_classid = classid;
 }
@@ -1292,16 +1319,15 @@ EXPORT_SYMBOL(sock_update_classid);
 #endif
 
 #if IS_ENABLED(CONFIG_NETPRIO_CGROUP)
-void sock_update_netprioidx(struct sock *sk, struct task_struct *task)
+void sock_update_netprioidx(struct sock *sk)
 {
        if (in_interrupt())
                return;
 
-       sk->sk_cgrp_prioidx = task_netprioidx(task);
+       sk->sk_cgrp_prioidx = task_netprioidx(current);
 }
 EXPORT_SYMBOL_GPL(sock_update_netprioidx);
 #endif
-#endif
 
 /**
  *     sk_alloc - All socket objects are allocated here
@@ -1327,8 +1353,8 @@ struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
                sock_net_set(sk, get_net(net));
                atomic_set(&sk->sk_wmem_alloc, 1);
 
-               sock_update_classid(sk, current);
-               sock_update_netprioidx(sk, current);
+               sock_update_classid(sk);
+               sock_update_netprioidx(sk);
        }
 
        return sk;
@@ -2212,7 +2238,7 @@ EXPORT_SYMBOL(sk_reset_timer);
 
 void sk_stop_timer(struct sock *sk, struct timer_list* timer)
 {
-       if (timer_pending(timer) && del_timer(timer))
+       if (del_timer(timer))
                __sock_put(sk);
 }
 EXPORT_SYMBOL(sk_stop_timer);
@@ -2818,7 +2844,7 @@ static const struct file_operations proto_seq_fops = {
 
 static __net_init int proto_init_net(struct net *net)
 {
-       if (!proc_net_fops_create(net, "protocols", S_IRUGO, &proto_seq_fops))
+       if (!proc_create("protocols", S_IRUGO, net->proc_net, &proto_seq_fops))
                return -ENOMEM;
 
        return 0;
@@ -2826,7 +2852,7 @@ static __net_init int proto_init_net(struct net *net)
 
 static __net_exit void proto_exit_net(struct net *net)
 {
-       proc_net_remove(net, "protocols");
+       remove_proc_entry("protocols", net->proc_net);
 }