diff options
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.patch | 150 |
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 @@ | |||
1 | From 9f14b0add1dcdbfa2ee61051d068211fb0a1fcc9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ladi Prosek <lprosek@redhat.com> | ||
3 | Date: Thu, 3 Mar 2016 09:37:17 +0100 | ||
4 | Subject: [PATCH] rng: move request queue cleanup from RngEgd to RngBackend | ||
5 | |||
6 | RngBackend is now in charge of cleaning up the linked list on | ||
7 | instance finalization. It also exposes a function to finalize | ||
8 | individual RngRequest instances, called by its child classes. | ||
9 | |||
10 | Signed-off-by: Ladi Prosek <lprosek@redhat.com> | ||
11 | Reviewed-by: Amit Shah <amit.shah@redhat.com> | ||
12 | Message-Id: <1456994238-9585-4-git-send-email-lprosek@redhat.com> | ||
13 | Signed-off-by: Amit Shah <amit.shah@redhat.com> | ||
14 | |||
15 | Upstream-Status: Backport | ||
16 | in support of CVE-2016-2858 | ||
17 | |||
18 | Signed-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 | |||
26 | Index: 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) | ||
82 | Index: 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, | ||
139 | Index: 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 | ||