| From 7ad28e0df7ee9dbcb793bb88dd81d4d22bb9a10e Mon Sep 17 00:00:00 2001 |
| From: Johannes Berg <johannes.berg@intel.com> |
| Date: Fri, 25 Jun 2021 10:34:37 +0200 |
| Subject: um: virtio_uml: fix memory leak on init failures |
| |
| From: Johannes Berg <johannes.berg@intel.com> |
| |
| commit 7ad28e0df7ee9dbcb793bb88dd81d4d22bb9a10e upstream. |
| |
| If initialization fails, e.g. because the connection failed, |
| we leak the 'vu_dev'. Fix that. Reported by smatch. |
| |
| Fixes: 5d38f324993f ("um: drivers: Add virtio vhost-user driver") |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| Acked-By: Anton Ivanov <anton.ivanov@cambridgegreys.com> |
| Signed-off-by: Richard Weinberger <richard@nod.at> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/um/drivers/virtio_uml.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/arch/um/drivers/virtio_uml.c |
| +++ b/arch/um/drivers/virtio_uml.c |
| @@ -1139,7 +1139,7 @@ static int virtio_uml_probe(struct platf |
| rc = os_connect_socket(pdata->socket_path); |
| } while (rc == -EINTR); |
| if (rc < 0) |
| - return rc; |
| + goto error_free; |
| vu_dev->sock = rc; |
| |
| spin_lock_init(&vu_dev->sock_lock); |
| @@ -1160,6 +1160,8 @@ static int virtio_uml_probe(struct platf |
| |
| error_init: |
| os_close_file(vu_dev->sock); |
| +error_free: |
| + kfree(vu_dev); |
| return rc; |
| } |
| |