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:
Родитель
13d3078e22
Коммит
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 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)
|
||||||
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)
|
||||||
}
|
}
|
||||||
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)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче