|
|
@@ -281,7 +281,8 @@ EXPORT_SYMBOL_GPL(vsock_insert_connected);
|
|
|
void vsock_remove_bound(struct vsock_sock *vsk)
|
|
|
{
|
|
|
spin_lock_bh(&vsock_table_lock);
|
|
|
- __vsock_remove_bound(vsk);
|
|
|
+ if (__vsock_in_bound_table(vsk))
|
|
|
+ __vsock_remove_bound(vsk);
|
|
|
spin_unlock_bh(&vsock_table_lock);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(vsock_remove_bound);
|
|
|
@@ -289,7 +290,8 @@ EXPORT_SYMBOL_GPL(vsock_remove_bound);
|
|
|
void vsock_remove_connected(struct vsock_sock *vsk)
|
|
|
{
|
|
|
spin_lock_bh(&vsock_table_lock);
|
|
|
- __vsock_remove_connected(vsk);
|
|
|
+ if (__vsock_in_connected_table(vsk))
|
|
|
+ __vsock_remove_connected(vsk);
|
|
|
spin_unlock_bh(&vsock_table_lock);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(vsock_remove_connected);
|
|
|
@@ -325,35 +327,10 @@ struct sock *vsock_find_connected_socket(struct sockaddr_vm *src,
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(vsock_find_connected_socket);
|
|
|
|
|
|
-static bool vsock_in_bound_table(struct vsock_sock *vsk)
|
|
|
-{
|
|
|
- bool ret;
|
|
|
-
|
|
|
- spin_lock_bh(&vsock_table_lock);
|
|
|
- ret = __vsock_in_bound_table(vsk);
|
|
|
- spin_unlock_bh(&vsock_table_lock);
|
|
|
-
|
|
|
- return ret;
|
|
|
-}
|
|
|
-
|
|
|
-static bool vsock_in_connected_table(struct vsock_sock *vsk)
|
|
|
-{
|
|
|
- bool ret;
|
|
|
-
|
|
|
- spin_lock_bh(&vsock_table_lock);
|
|
|
- ret = __vsock_in_connected_table(vsk);
|
|
|
- spin_unlock_bh(&vsock_table_lock);
|
|
|
-
|
|
|
- return ret;
|
|
|
-}
|
|
|
-
|
|
|
void vsock_remove_sock(struct vsock_sock *vsk)
|
|
|
{
|
|
|
- if (vsock_in_bound_table(vsk))
|
|
|
- vsock_remove_bound(vsk);
|
|
|
-
|
|
|
- if (vsock_in_connected_table(vsk))
|
|
|
- vsock_remove_connected(vsk);
|
|
|
+ vsock_remove_bound(vsk);
|
|
|
+ vsock_remove_connected(vsk);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(vsock_remove_sock);
|
|
|
|
|
|
@@ -484,8 +461,7 @@ static void vsock_pending_work(struct work_struct *work)
|
|
|
* incoming packets can't find this socket, and to reduce the reference
|
|
|
* count.
|
|
|
*/
|
|
|
- if (vsock_in_connected_table(vsk))
|
|
|
- vsock_remove_connected(vsk);
|
|
|
+ vsock_remove_connected(vsk);
|
|
|
|
|
|
sk->sk_state = TCP_CLOSE;
|
|
|
|