net: kill sk_change_net and sk_release_kernel
These functions are no longer needed and no longer used kill them. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
13d3078e22
commit
affb9792f1
|
@ -1518,7 +1518,6 @@ static inline void unlock_sock_fast(struct sock *sk, bool slow)
|
|||
struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
|
||||
struct proto *prot, int kern);
|
||||
void sk_free(struct sock *sk);
|
||||
void sk_release_kernel(struct sock *sk);
|
||||
struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority);
|
||||
|
||||
struct sk_buff *sock_wmalloc(struct sock *sk, unsigned long size, int force,
|
||||
|
@ -2194,22 +2193,6 @@ void sock_net_set(struct sock *sk, struct net *net)
|
|||
write_pnet(&sk->sk_net, net);
|
||||
}
|
||||
|
||||
/*
|
||||
* Kernel sockets, f.e. rtnl or icmp_socket, are a part of a namespace.
|
||||
* They should not hold a reference to a namespace in order to allow
|
||||
* to stop it.
|
||||
* Sockets after sk_change_net should be released using sk_release_kernel
|
||||
*/
|
||||
static inline void sk_change_net(struct sock *sk, struct net *net)
|
||||
{
|
||||
struct net *current_net = sock_net(sk);
|
||||
|
||||
if (!net_eq(current_net, net)) {
|
||||
put_net(current_net);
|
||||
sock_net_set(sk, net);
|
||||
}
|
||||
}
|
||||
|
||||
static inline struct sock *skb_steal_sock(struct sk_buff *skb)
|
||||
{
|
||||
if (skb->sk) {
|
||||
|
|
|
@ -1466,25 +1466,6 @@ void sk_free(struct sock *sk)
|
|||
}
|
||||
EXPORT_SYMBOL(sk_free);
|
||||
|
||||
/*
|
||||
* Last sock_put should drop reference to sk->sk_net. It has already
|
||||
* been dropped in sk_change_net. Taking reference to stopping namespace
|
||||
* is not an option.
|
||||
* Take reference to a socket to remove it from hash _alive_ and after that
|
||||
* destroy it in the context of init_net.
|
||||
*/
|
||||
void sk_release_kernel(struct sock *sk)
|
||||
{
|
||||
if (sk == NULL || sk->sk_socket == NULL)
|
||||
return;
|
||||
|
||||
sock_hold(sk);
|
||||
sock_net_set(sk, get_net(&init_net));
|
||||
sock_release(sk->sk_socket);
|
||||
sock_put(sk);
|
||||
}
|
||||
EXPORT_SYMBOL(sk_release_kernel);
|
||||
|
||||
static void sk_update_clone(const struct sock *sk, struct sock *newsk)
|
||||
{
|
||||
if (mem_cgroup_sockets_enabled && sk->sk_cgrp)
|
||||
|
|
Loading…
Reference in New Issue