Commit affb9792 authored by Eric W. Biederman's avatar Eric W. Biederman Committed by David S. Miller

net: kill sk_change_net and sk_release_kernel

These functions are no longer needed and no longer used kill them.
Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 13d3078e
...@@ -1518,7 +1518,6 @@ static inline void unlock_sock_fast(struct sock *sk, bool slow) ...@@ -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 sock *sk_alloc(struct net *net, int family, gfp_t priority,
struct proto *prot, int kern); struct proto *prot, int kern);
void sk_free(struct sock *sk); 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 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, 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) ...@@ -2194,22 +2193,6 @@ void sock_net_set(struct sock *sk, struct net *net)
write_pnet(&sk->sk_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) static inline struct sock *skb_steal_sock(struct sk_buff *skb)
{ {
if (skb->sk) { if (skb->sk) {
......
...@@ -1466,25 +1466,6 @@ void sk_free(struct sock *sk) ...@@ -1466,25 +1466,6 @@ void sk_free(struct sock *sk)
} }
EXPORT_SYMBOL(sk_free); 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) static void sk_update_clone(const struct sock *sk, struct sock *newsk)
{ {
if (mem_cgroup_sockets_enabled && sk->sk_cgrp) if (mem_cgroup_sockets_enabled && sk->sk_cgrp)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment