Commit 4ef7ea91 authored by Jorgen Hansen's avatar Jorgen Hansen Committed by David S. Miller

VSOCK: sock_put wasn't safe to call in interrupt context

In the vsock vmci_transport driver, sock_put wasn't safe to call
in interrupt context, since that may call the vsock destructor
which in turn calls several functions that should only be called
from process context. This change defers the callling of these
functions  to a worker thread. All these functions were
deallocation of resources related to the transport itself.

Furthermore, an unused callback was removed to simplify the
cleanup.

Multiple customers have been hitting this issue when using
VMware tools on vSphere 2015.

Also added a version to the vmci transport module (starting from
1.0.2.0-k since up until now it appears that this module was
sharing version with vsock that is currently at 1.0.1.0-k).
Reviewed-by: default avatarAditya Asarwade <asarwade@vmware.com>
Reviewed-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: default avatarJorgen Hansen <jhansen@vmware.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 47191d65
This diff is collapsed.
...@@ -119,10 +119,12 @@ struct vmci_transport { ...@@ -119,10 +119,12 @@ struct vmci_transport {
u64 queue_pair_size; u64 queue_pair_size;
u64 queue_pair_min_size; u64 queue_pair_min_size;
u64 queue_pair_max_size; u64 queue_pair_max_size;
u32 attach_sub_id;
u32 detach_sub_id; u32 detach_sub_id;
union vmci_transport_notify notify; union vmci_transport_notify notify;
struct vmci_transport_notify_ops *notify_ops; struct vmci_transport_notify_ops *notify_ops;
struct list_head elem;
struct sock *sk;
spinlock_t lock; /* protects sk. */
}; };
int vmci_transport_register(void); int vmci_transport_register(void);
......
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