|
@@ -451,14 +451,14 @@ static int vsock_send_shutdown(struct sock *sk, int mode)
|
|
|
return transport->shutdown(vsock_sk(sk), mode);
|
|
|
}
|
|
|
|
|
|
-void vsock_pending_work(struct work_struct *work)
|
|
|
+static void vsock_pending_work(struct work_struct *work)
|
|
|
{
|
|
|
struct sock *sk;
|
|
|
struct sock *listener;
|
|
|
struct vsock_sock *vsk;
|
|
|
bool cleanup;
|
|
|
|
|
|
- vsk = container_of(work, struct vsock_sock, dwork.work);
|
|
|
+ vsk = container_of(work, struct vsock_sock, pending_work.work);
|
|
|
sk = sk_vsock(vsk);
|
|
|
listener = vsk->listener;
|
|
|
cleanup = true;
|
|
@@ -498,7 +498,6 @@ out:
|
|
|
sock_put(sk);
|
|
|
sock_put(listener);
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(vsock_pending_work);
|
|
|
|
|
|
/**** SOCKET OPERATIONS ****/
|
|
|
|
|
@@ -597,6 +596,8 @@ static int __vsock_bind(struct sock *sk, struct sockaddr_vm *addr)
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
|
+static void vsock_connect_timeout(struct work_struct *work);
|
|
|
+
|
|
|
struct sock *__vsock_create(struct net *net,
|
|
|
struct socket *sock,
|
|
|
struct sock *parent,
|
|
@@ -638,6 +639,8 @@ struct sock *__vsock_create(struct net *net,
|
|
|
vsk->sent_request = false;
|
|
|
vsk->ignore_connecting_rst = false;
|
|
|
vsk->peer_shutdown = 0;
|
|
|
+ INIT_DELAYED_WORK(&vsk->connect_work, vsock_connect_timeout);
|
|
|
+ INIT_DELAYED_WORK(&vsk->pending_work, vsock_pending_work);
|
|
|
|
|
|
psk = parent ? vsock_sk(parent) : NULL;
|
|
|
if (parent) {
|
|
@@ -1117,7 +1120,7 @@ static void vsock_connect_timeout(struct work_struct *work)
|
|
|
struct vsock_sock *vsk;
|
|
|
int cancel = 0;
|
|
|
|
|
|
- vsk = container_of(work, struct vsock_sock, dwork.work);
|
|
|
+ vsk = container_of(work, struct vsock_sock, connect_work.work);
|
|
|
sk = sk_vsock(vsk);
|
|
|
|
|
|
lock_sock(sk);
|
|
@@ -1221,9 +1224,7 @@ static int vsock_stream_connect(struct socket *sock, struct sockaddr *addr,
|
|
|
* timeout fires.
|
|
|
*/
|
|
|
sock_hold(sk);
|
|
|
- INIT_DELAYED_WORK(&vsk->dwork,
|
|
|
- vsock_connect_timeout);
|
|
|
- schedule_delayed_work(&vsk->dwork, timeout);
|
|
|
+ schedule_delayed_work(&vsk->connect_work, timeout);
|
|
|
|
|
|
/* Skip ahead to preserve error code set above. */
|
|
|
goto out_wait;
|