git: fca65e1baa1d - stable/13 - libvmmapi: Add vm_close()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 26 Jan 2023 19:47:40 UTC
The branch stable/13 has been updated by jhb:
URL: https://cgit.FreeBSD.org/src/commit/?id=fca65e1baa1d05d7e98e0f05193cc94c637944b0
commit fca65e1baa1d05d7e98e0f05193cc94c637944b0
Author: Vitaliy Gusev <gusev.vitaliy@gmail.com>
AuthorDate: 2022-06-30 21:21:57 +0000
Commit: John Baldwin <jhb@FreeBSD.org>
CommitDate: 2023-01-26 19:29:22 +0000
libvmmapi: Add vm_close()
Currently there is no way to safely free a vm structure without
leaking the fd. vm_destroy() closes the fd but also destroys the VM
whereas in some cases a VM needs to be opened (vm_open) and then
closed (vm_close).
Reviewed by: jhb
Sponsored by: vStack
Differential Revision: https://reviews.freebsd.org/D35073
(cherry picked from commit f0880ab791a510391a12f2ab7b01889b6774bca0)
---
lib/libvmmapi/vmmapi.c | 9 +++++++++
lib/libvmmapi/vmmapi.h | 2 ++
2 files changed, 11 insertions(+)
diff --git a/lib/libvmmapi/vmmapi.c b/lib/libvmmapi/vmmapi.c
index 4fc9c4dc69e9..454d7ee21b36 100644
--- a/lib/libvmmapi/vmmapi.c
+++ b/lib/libvmmapi/vmmapi.c
@@ -142,6 +142,15 @@ err:
return (NULL);
}
+void
+vm_close(struct vmctx *vm)
+{
+ assert(vm != NULL);
+
+ close(vm->fd);
+ free(vm);
+}
+
void
vm_destroy(struct vmctx *vm)
{
diff --git a/lib/libvmmapi/vmmapi.h b/lib/libvmmapi/vmmapi.h
index c8454150f0b1..b26f12f7c60e 100644
--- a/lib/libvmmapi/vmmapi.h
+++ b/lib/libvmmapi/vmmapi.h
@@ -34,6 +34,7 @@
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/cpuset.h>
+#include <machine/vmm.h>
#include <machine/vmm_dev.h>
#include <stdbool.h>
@@ -118,6 +119,7 @@ int vm_munmap_memseg(struct vmctx *ctx, vm_paddr_t gpa, size_t len);
int vm_create(const char *name);
struct vmctx *vm_open(const char *name);
+void vm_close(struct vmctx *ctx);
void vm_destroy(struct vmctx *ctx);
int vm_limit_rights(struct vmctx *ctx);
int vm_parse_memsize(const char *optarg, size_t *memsize);