| From e3928867b8812df6289ee538231e07463cb3a3da Mon Sep 17 00:00:00 2001 |
| From: Paolo Abeni <pabeni@redhat.com> |
| Date: Thu, 7 Feb 2019 14:13:18 +0100 |
| Subject: vsock: cope with memory allocation failure at socket creation time |
| |
| [ Upstream commit 225d9464268599a5b4d094d02ec17808e44c7553 ] |
| |
| In the unlikely event that the kmalloc call in vmci_transport_socket_init() |
| fails, we end-up calling vmci_transport_destruct() with a NULL vmci_trans() |
| and oopsing. |
| |
| This change addresses the above explicitly checking for zero vmci_trans() |
| at destruction time. |
| |
| Reported-by: Xiumei Mu <xmu@redhat.com> |
| Fixes: d021c344051a ("VSOCK: Introduce VM Sockets") |
| Signed-off-by: Paolo Abeni <pabeni@redhat.com> |
| Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> |
| Reviewed-by: Jorgen Hansen <jhansen@vmware.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| net/vmw_vsock/vmci_transport.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c |
| index c361ce7824123..c3d5ab01fba7b 100644 |
| --- a/net/vmw_vsock/vmci_transport.c |
| +++ b/net/vmw_vsock/vmci_transport.c |
| @@ -1651,6 +1651,10 @@ static void vmci_transport_cleanup(struct work_struct *work) |
| |
| static void vmci_transport_destruct(struct vsock_sock *vsk) |
| { |
| + /* transport can be NULL if we hit a failure at init() time */ |
| + if (!vmci_trans(vsk)) |
| + return; |
| + |
| /* Ensure that the detach callback doesn't use the sk/vsk |
| * we are about to destruct. |
| */ |
| -- |
| 2.19.1 |
| |