net/ipv6: Make __inet6_bind static
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>
This commit is contained in:
parent
684009d4fd
commit
032234d823
|
@ -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);
|
void ipv6_local_rxpmtu(struct sock *sk, struct flowi6 *fl6, u32 mtu);
|
||||||
|
|
||||||
int inet6_release(struct socket *sock);
|
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_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len);
|
||||||
int inet6_getname(struct socket *sock, struct sockaddr *uaddr,
|
int inet6_getname(struct socket *sock, struct sockaddr *uaddr,
|
||||||
int peer);
|
int peer);
|
||||||
|
|
|
@ -273,33 +273,8 @@ out_rcu_unlock:
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int __inet6_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len,
|
||||||
/* bind for INET6 API */
|
bool force_bind_address_no_port, bool with_lock)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
struct sockaddr_in6 *addr = (struct sockaddr_in6 *)uaddr;
|
struct sockaddr_in6 *addr = (struct sockaddr_in6 *)uaddr;
|
||||||
struct inet_sock *inet = inet_sk(sk);
|
struct inet_sock *inet = inet_sk(sk);
|
||||||
|
@ -444,6 +419,30 @@ out_unlock:
|
||||||
goto out;
|
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)
|
int inet6_release(struct socket *sock)
|
||||||
{
|
{
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
|
|
Loading…
Reference in New Issue