48 lines
1.4 KiB
Diff
48 lines
1.4 KiB
Diff
From 4196726e44c437793294af15d95e53164cf9a02d Mon Sep 17 00:00:00 2001
|
|
From: Li Qiang <liq3ea@gmail.com>
|
|
Date: Wed, 23 Nov 2016 13:53:34 +0100
|
|
Subject: [PATCH 08/12] 9pfs: add cleanup operation for handle backend driver
|
|
|
|
In the init operation of handle backend dirver, it allocates a
|
|
handle_data struct and opens a mount file. We should free these
|
|
resources when the 9pfs device is unrealized. This is what this
|
|
patch does.
|
|
|
|
Signed-off-by: Li Qiang <liq3ea@gmail.com>
|
|
Reviewed-by: Greg Kurz <groug@kaod.org>
|
|
Signed-off-by: Greg Kurz <groug@kaod.org>
|
|
---
|
|
hw/9pfs/9p-handle.c | 9 +++++++++
|
|
1 file changed, 9 insertions(+)
|
|
|
|
diff --git a/hw/9pfs/9p-handle.c b/hw/9pfs/9p-handle.c
|
|
index 3d77594..1687661 100644
|
|
--- a/hw/9pfs/9p-handle.c
|
|
+++ b/hw/9pfs/9p-handle.c
|
|
@@ -649,6 +649,14 @@ out:
|
|
return ret;
|
|
}
|
|
|
|
+static void handle_cleanup(FsContext *ctx)
|
|
+{
|
|
+ struct handle_data *data = ctx->private;
|
|
+
|
|
+ close(data->mountfd);
|
|
+ g_free(data);
|
|
+}
|
|
+
|
|
static int handle_parse_opts(QemuOpts *opts, struct FsDriverEntry *fse)
|
|
{
|
|
const char *sec_model = qemu_opt_get(opts, "security_model");
|
|
@@ -671,6 +679,7 @@ static int handle_parse_opts(QemuOpts *opts, struct FsDriverEntry *fse)
|
|
FileOperations handle_ops = {
|
|
.parse_opts = handle_parse_opts,
|
|
.init = handle_init,
|
|
+ .cleanup = handle_cleanup,
|
|
.lstat = handle_lstat,
|
|
.readlink = handle_readlink,
|
|
.close = handle_close,
|
|
--
|
|
2.1.4
|
|
|