net/ipv6: Make __inet6_bind static
authorDavid Ahern <dsahern@gmail.com>
Tue, 17 Apr 2018 17:00:39 +0000 (10:00 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 17 Apr 2018 17:19:22 +0000 (13:19 -0400)
BPF core gets access to __inet6_bind via ipv6_bpf_stub_impl, so it is
not invoked directly outside of af_inet6.c. Make it static and move
inet6_bind after to avoid forward declaration.

Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ipv6.h
net/ipv6/af_inet6.c

index 836f31af1369b9c6967073eed66ce5a062e4f9c2..68b167d988792f1278af3bdb808768bea23fe30c 100644 (file)
@@ -1044,8 +1044,6 @@ void ipv6_local_error(struct sock *sk, int err, struct flowi6 *fl6, u32 info);
 void ipv6_local_rxpmtu(struct sock *sk, struct flowi6 *fl6, u32 mtu);
 
 int inet6_release(struct socket *sock);
-int __inet6_bind(struct sock *sock, struct sockaddr *uaddr, int addr_len,
-                bool force_bind_address_no_port, bool with_lock);
 int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len);
 int inet6_getname(struct socket *sock, struct sockaddr *uaddr,
                  int peer);
index 2c694912df2e77b414de5cc2aa43e2ec59286836..36d622c477b1ed3c5d2b753938444526344a6109 100644 (file)
@@ -273,33 +273,8 @@ out_rcu_unlock:
        goto out;
 }
 
-
-/* bind for INET6 API */
-int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
-{
-       struct sock *sk = sock->sk;
-       int err = 0;
-
-       /* If the socket has its own bind function then use it. */
-       if (sk->sk_prot->bind)
-               return sk->sk_prot->bind(sk, uaddr, addr_len);
-
-       if (addr_len < SIN6_LEN_RFC2133)
-               return -EINVAL;
-
-       /* BPF prog is run before any checks are done so that if the prog
-        * changes context in a wrong way it will be caught.
-        */
-       err = BPF_CGROUP_RUN_PROG_INET6_BIND(sk, uaddr);
-       if (err)
-               return err;
-
-       return __inet6_bind(sk, uaddr, addr_len, false, true);
-}
-EXPORT_SYMBOL(inet6_bind);
-
-int __inet6_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len,
-                bool force_bind_address_no_port, bool with_lock)
+static int __inet6_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len,
+                       bool force_bind_address_no_port, bool with_lock)
 {
        struct sockaddr_in6 *addr = (struct sockaddr_in6 *)uaddr;
        struct inet_sock *inet = inet_sk(sk);
@@ -444,6 +419,30 @@ out_unlock:
        goto out;
 }
 
+/* bind for INET6 API */
+int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
+{
+       struct sock *sk = sock->sk;
+       int err = 0;
+
+       /* If the socket has its own bind function then use it. */
+       if (sk->sk_prot->bind)
+               return sk->sk_prot->bind(sk, uaddr, addr_len);
+
+       if (addr_len < SIN6_LEN_RFC2133)
+               return -EINVAL;
+
+       /* BPF prog is run before any checks are done so that if the prog
+        * changes context in a wrong way it will be caught.
+        */
+       err = BPF_CGROUP_RUN_PROG_INET6_BIND(sk, uaddr);
+       if (err)
+               return err;
+
+       return __inet6_bind(sk, uaddr, addr_len, false, true);
+}
+EXPORT_SYMBOL(inet6_bind);
+
 int inet6_release(struct socket *sock)
 {
        struct sock *sk = sock->sk;