[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 05/29] qom: cpu: fix parsed feature string length
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [PULL 05/29] qom: cpu: fix parsed feature string length |
Date: |
Fri, 1 Sep 2017 12:02:53 -0300 |
From: Igor Mammedov <address@hidden>
since commit ( 9262685b cpu: Factor out cpu_generic_init() )
features parsed by it were truncated only to the 1st feature
after CPU name due to fact that
featurestr = strtok(NULL, ",");
cc->parse_features(cpu, featurestr, &err);
would extract exactly one feature and parse_features() callback
would parse it and only it leaving the rest of features ignored.
Reuse approach from x86 custom impl. i.e. replace strtok() token
parsing with g_strsplit(), which would split feature string in
2 parts name and features list and pass the later to
parse_features() callback.
Signed-off-by: Igor Mammedov <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Eduardo Habkost <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>
---
qom/cpu.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/qom/cpu.c b/qom/cpu.c
index e6210d5949..deb8880930 100644
--- a/qom/cpu.c
+++ b/qom/cpu.c
@@ -55,28 +55,26 @@ bool cpu_exists(int64_t id)
CPUState *cpu_generic_init(const char *typename, const char *cpu_model)
{
- char *str, *name, *featurestr;
CPUState *cpu = NULL;
ObjectClass *oc;
CPUClass *cc;
Error *err = NULL;
+ gchar **model_pieces;
- str = g_strdup(cpu_model);
- name = strtok(str, ",");
+ model_pieces = g_strsplit(cpu_model, ",", 2);
- oc = cpu_class_by_name(typename, name);
+ oc = cpu_class_by_name(typename, model_pieces[0]);
if (oc == NULL) {
- g_free(str);
+ g_strfreev(model_pieces);
return NULL;
}
cc = CPU_CLASS(oc);
- featurestr = strtok(NULL, ",");
/* TODO: all callers of cpu_generic_init() need to be converted to
* call parse_features() only once, before calling cpu_generic_init().
*/
- cc->parse_features(object_class_get_name(oc), featurestr, &err);
- g_free(str);
+ cc->parse_features(object_class_get_name(oc), model_pieces[1], &err);
+ g_strfreev(model_pieces);
if (err != NULL) {
goto out;
}
--
2.13.5
- [Qemu-devel] [PULL 00/29] x86 & cpu queue, 2017-09-01, Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 03/29] hmp: allow apic-id for "info lapic", Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 02/29] cpu: cpu_by_arch_id() helper, Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 01/29] qom: Remove unused errp parameter from can_be_deleted(), Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 05/29] qom: cpu: fix parsed feature string length,
Eduardo Habkost <=
- [Qemu-devel] [PULL 04/29] target-i386/cpu: Add new EPYC CPU model, Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 07/29] sparc: embed sparc_def_t into CPUSPARCState, Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 06/29] sparc: convert cpu models to SPARC cpu subclasses, Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 08/29] sparc: convert cpu features to qdev properties, Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 09/29] sparc: move adhoc CPUSPARCState initialization to realize time, Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 10/29] sparc: make cpu feature parsing property based, Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 11/29] sparc: replace cpu_sparc_init() with cpu_generic_init(), Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 14/29] hppa: replace cpu_hppa_init() with cpu_generic_init(), Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 12/29] s390x: replace cpu_s390x_init() with cpu_generic_init(), Eduardo Habkost, 2017/09/01
- [Qemu-devel] [PULL 13/29] alpha: replace cpu_alpha_init() with cpu_generic_init(), Eduardo Habkost, 2017/09/01