net: proc: change proc_net_fops_create to proc_create
[firefly-linux-kernel-4.4.55.git] / net / core / sock.c
index bc131d419683c11bd6f098c930e7d4f3cd9fb697..b4d562ef36fb743434e1ea13f05e0531a70ca22e 100644 (file)
@@ -665,6 +665,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 +864,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);
@@ -965,6 +975,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 +1154,10 @@ 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;
+
        default:
                return -ENOPROTOOPT;
        }
@@ -2212,7 +2230,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 +2836,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;