summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/qemu/qemu/rng_move_request_queue_cleanup_from_RngEgd_to_RngBackend.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/qemu/qemu/rng_move_request_queue_cleanup_from_RngEgd_to_RngBackend.patch')
-rw-r--r--meta/recipes-devtools/qemu/qemu/rng_move_request_queue_cleanup_from_RngEgd_to_RngBackend.patch150
1 files changed, 0 insertions, 150 deletions
diff --git a/meta/recipes-devtools/qemu/qemu/rng_move_request_queue_cleanup_from_RngEgd_to_RngBackend.patch b/meta/recipes-devtools/qemu/qemu/rng_move_request_queue_cleanup_from_RngEgd_to_RngBackend.patch
deleted file mode 100644
index afe8bf66cf..0000000000
--- a/meta/recipes-devtools/qemu/qemu/rng_move_request_queue_cleanup_from_RngEgd_to_RngBackend.patch
+++ /dev/null
@@ -1,150 +0,0 @@
1From 9f14b0add1dcdbfa2ee61051d068211fb0a1fcc9 Mon Sep 17 00:00:00 2001
2From: Ladi Prosek <lprosek@redhat.com>
3Date: Thu, 3 Mar 2016 09:37:17 +0100
4Subject: [PATCH] rng: move request queue cleanup from RngEgd to RngBackend
5
6RngBackend is now in charge of cleaning up the linked list on
7instance finalization. It also exposes a function to finalize
8individual RngRequest instances, called by its child classes.
9
10Signed-off-by: Ladi Prosek <lprosek@redhat.com>
11Reviewed-by: Amit Shah <amit.shah@redhat.com>
12Message-Id: <1456994238-9585-4-git-send-email-lprosek@redhat.com>
13Signed-off-by: Amit Shah <amit.shah@redhat.com>
14
15Upstream-Status: Backport
16in support of CVE-2016-2858
17
18Signed-off-by: Armin Kuster <akuster@mvista.com>
19
20---
21 backends/rng-egd.c | 25 +------------------------
22 backends/rng.c | 32 ++++++++++++++++++++++++++++++++
23 include/sysemu/rng.h | 12 ++++++++++++
24 3 files changed, 45 insertions(+), 24 deletions(-)
25
26Index: qemu-2.5.0/backends/rng-egd.c
27===================================================================
28--- qemu-2.5.0.orig/backends/rng-egd.c
29+++ qemu-2.5.0/backends/rng-egd.c
30@@ -57,12 +57,6 @@ static void rng_egd_request_entropy(RngB
31 s->parent.requests = g_slist_append(s->parent.requests, req);
32 }
33
34-static void rng_egd_free_request(RngRequest *req)
35-{
36- g_free(req->data);
37- g_free(req);
38-}
39-
40 static int rng_egd_chr_can_read(void *opaque)
41 {
42 RngEgd *s = RNG_EGD(opaque);
43@@ -92,28 +86,13 @@ static void rng_egd_chr_read(void *opaqu
44 size -= len;
45
46 if (req->offset == req->size) {
47- s->parent.requests = g_slist_remove_link(s->parent.requests,
48- s->parent.requests);
49
50 req->receive_entropy(req->opaque, req->data, req->size);
51-
52- rng_egd_free_request(req);
53+ rng_backend_finalize_request(&s->parent, req);
54 }
55 }
56 }
57
58-static void rng_egd_free_requests(RngEgd *s)
59-{
60- GSList *i;
61-
62- for (i = s->parent.requests; i; i = i->next) {
63- rng_egd_free_request(i->data);
64- }
65-
66- g_slist_free(s->parent.requests);
67- s->parent.requests = NULL;
68-}
69-
70 static void rng_egd_opened(RngBackend *b, Error **errp)
71 {
72 RngEgd *s = RNG_EGD(b);
73@@ -182,8 +161,6 @@ static void rng_egd_finalize(Object *obj
74 }
75
76 g_free(s->chr_name);
77-
78- rng_egd_free_requests(s);
79 }
80
81 static void rng_egd_class_init(ObjectClass *klass, void *data)
82Index: qemu-2.5.0/backends/rng.c
83===================================================================
84--- qemu-2.5.0.orig/backends/rng.c
85+++ qemu-2.5.0/backends/rng.c
86@@ -63,6 +63,30 @@ static void rng_backend_prop_set_opened(
87 s->opened = true;
88 }
89
90+static void rng_backend_free_request(RngRequest *req)
91+{
92+ g_free(req->data);
93+ g_free(req);
94+}
95+
96+static void rng_backend_free_requests(RngBackend *s)
97+{
98+ GSList *i;
99+
100+ for (i = s->requests; i; i = i->next) {
101+ rng_backend_free_request(i->data);
102+ }
103+
104+ g_slist_free(s->requests);
105+ s->requests = NULL;
106+}
107+
108+void rng_backend_finalize_request(RngBackend *s, RngRequest *req)
109+{
110+ s->requests = g_slist_remove(s->requests, req);
111+ rng_backend_free_request(req);
112+}
113+
114 static void rng_backend_init(Object *obj)
115 {
116 object_property_add_bool(obj, "opened",
117@@ -71,6 +95,13 @@ static void rng_backend_init(Object *obj
118 NULL);
119 }
120
121+static void rng_backend_finalize(Object *obj)
122+{
123+ RngBackend *s = RNG_BACKEND(obj);
124+
125+ rng_backend_free_requests(s);
126+}
127+
128 static void rng_backend_class_init(ObjectClass *oc, void *data)
129 {
130 UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
131@@ -83,6 +114,7 @@ static const TypeInfo rng_backend_info =
132 .parent = TYPE_OBJECT,
133 .instance_size = sizeof(RngBackend),
134 .instance_init = rng_backend_init,
135+ .instance_finalize = rng_backend_finalize,
136 .class_size = sizeof(RngBackendClass),
137 .class_init = rng_backend_class_init,
138 .abstract = true,
139Index: qemu-2.5.0/include/sysemu/rng.h
140===================================================================
141--- qemu-2.5.0.orig/include/sysemu/rng.h
142+++ qemu-2.5.0/include/sysemu/rng.h
143@@ -61,6 +61,7 @@ struct RngBackend
144 GSList *requests;
145 };
146
147+
148 /**
149 * rng_backend_request_entropy:
150 * @s: the backend to request entropy from