Skip to content

Commit f2a1cf9

Browse files
committed
Merge remote-tracking branch 'remotes/armbru/tags/pull-error-2020-07-07-v2' into staging
Error reporting patches patches for 2020-07-07 # gpg: Signature made Fri 10 Jul 2020 14:24:42 BST # gpg: using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653 # gpg: issuer "[email protected]" # gpg: Good signature from "Markus Armbruster <[email protected]>" [full] # gpg: aka "Markus Armbruster <[email protected]>" [full] # Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867 4E5F 3870 B400 EB91 8653 * remotes/armbru/tags/pull-error-2020-07-07-v2: (53 commits) xen: Use ERRP_GUARD() nbd: Use ERRP_GUARD() virtio-9p: Use ERRP_GUARD() fw_cfg: Use ERRP_GUARD() pflash: Use ERRP_GUARD() sd: Use ERRP_GUARD() scripts: Coccinelle script to use ERRP_GUARD() error: New macro ERRP_GUARD() hmp: Ignore Error objects where the return value suffices qdev: Ignore Error objects where the return value suffices qemu-img: Ignore Error objects where the return value suffices error: Avoid error_propagate() after migrate_add_blocker() qapi: Purge error_propagate() from QAPI core qapi: Smooth visitor error checking in generated code qapi: Smooth another visitor error checking pattern block/parallels: Simplify parallels_open() after previous commit error: Reduce unnecessary error propagation error: Eliminate error_propagate() manually error: Eliminate error_propagate() with Coccinelle, part 2 error: Eliminate error_propagate() with Coccinelle, part 1 ... Signed-off-by: Peter Maydell <[email protected]>
2 parents b6d7e9b + 1de7096 commit f2a1cf9

File tree

294 files changed

+3052
-3774
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

294 files changed

+3052
-3774
lines changed

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2176,6 +2176,7 @@ F: scripts/coccinelle/error-use-after-free.cocci
21762176
F: scripts/coccinelle/error_propagate_null.cocci
21772177
F: scripts/coccinelle/remove_local_err.cocci
21782178
F: scripts/coccinelle/use-error_fatal.cocci
2179+
F: scripts/coccinelle/errp-guard.cocci
21792180

21802181
GDB stub
21812182
M: Alex Bennée <[email protected]>

accel/kvm/kvm-all.c

Lines changed: 24 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3113,12 +3113,9 @@ static void kvm_set_kvm_shadow_mem(Object *obj, Visitor *v,
31133113
Error **errp)
31143114
{
31153115
KVMState *s = KVM_STATE(obj);
3116-
Error *error = NULL;
31173116
int64_t value;
31183117

3119-
visit_type_int(v, name, &value, &error);
3120-
if (error) {
3121-
error_propagate(errp, error);
3118+
if (!visit_type_int(v, name, &value, errp)) {
31223119
return;
31233120
}
31243121

@@ -3129,37 +3126,33 @@ static void kvm_set_kernel_irqchip(Object *obj, Visitor *v,
31293126
const char *name, void *opaque,
31303127
Error **errp)
31313128
{
3132-
Error *err = NULL;
31333129
KVMState *s = KVM_STATE(obj);
31343130
OnOffSplit mode;
31353131

3136-
visit_type_OnOffSplit(v, name, &mode, &err);
3137-
if (err) {
3138-
error_propagate(errp, err);
3132+
if (!visit_type_OnOffSplit(v, name, &mode, errp)) {
31393133
return;
3140-
} else {
3141-
switch (mode) {
3142-
case ON_OFF_SPLIT_ON:
3143-
s->kernel_irqchip_allowed = true;
3144-
s->kernel_irqchip_required = true;
3145-
s->kernel_irqchip_split = ON_OFF_AUTO_OFF;
3146-
break;
3147-
case ON_OFF_SPLIT_OFF:
3148-
s->kernel_irqchip_allowed = false;
3149-
s->kernel_irqchip_required = false;
3150-
s->kernel_irqchip_split = ON_OFF_AUTO_OFF;
3151-
break;
3152-
case ON_OFF_SPLIT_SPLIT:
3153-
s->kernel_irqchip_allowed = true;
3154-
s->kernel_irqchip_required = true;
3155-
s->kernel_irqchip_split = ON_OFF_AUTO_ON;
3156-
break;
3157-
default:
3158-
/* The value was checked in visit_type_OnOffSplit() above. If
3159-
* we get here, then something is wrong in QEMU.
3160-
*/
3161-
abort();
3162-
}
3134+
}
3135+
switch (mode) {
3136+
case ON_OFF_SPLIT_ON:
3137+
s->kernel_irqchip_allowed = true;
3138+
s->kernel_irqchip_required = true;
3139+
s->kernel_irqchip_split = ON_OFF_AUTO_OFF;
3140+
break;
3141+
case ON_OFF_SPLIT_OFF:
3142+
s->kernel_irqchip_allowed = false;
3143+
s->kernel_irqchip_required = false;
3144+
s->kernel_irqchip_split = ON_OFF_AUTO_OFF;
3145+
break;
3146+
case ON_OFF_SPLIT_SPLIT:
3147+
s->kernel_irqchip_allowed = true;
3148+
s->kernel_irqchip_required = true;
3149+
s->kernel_irqchip_split = ON_OFF_AUTO_ON;
3150+
break;
3151+
default:
3152+
/* The value was checked in visit_type_OnOffSplit() above. If
3153+
* we get here, then something is wrong in QEMU.
3154+
*/
3155+
abort();
31633156
}
31643157
}
31653158

accel/tcg/tcg-all.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,9 @@ static void tcg_set_tb_size(Object *obj, Visitor *v,
182182
Error **errp)
183183
{
184184
TCGState *s = TCG_STATE(obj);
185-
Error *error = NULL;
186185
uint32_t value;
187186

188-
visit_type_uint32(v, name, &value, &error);
189-
if (error) {
190-
error_propagate(errp, error);
187+
if (!visit_type_uint32(v, name, &value, errp)) {
191188
return;
192189
}
193190

audio/audio_legacy.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -421,11 +421,12 @@ typedef struct {
421421
GList *path;
422422
} LegacyPrintVisitor;
423423

424-
static void lv_start_struct(Visitor *v, const char *name, void **obj,
424+
static bool lv_start_struct(Visitor *v, const char *name, void **obj,
425425
size_t size, Error **errp)
426426
{
427427
LegacyPrintVisitor *lv = (LegacyPrintVisitor *) v;
428428
lv->path = g_list_append(lv->path, g_strdup(name));
429+
return true;
429430
}
430431

431432
static void lv_end_struct(Visitor *v, void **obj)
@@ -453,27 +454,30 @@ static void lv_print_key(Visitor *v, const char *name)
453454
printf("%s=", name);
454455
}
455456

456-
static void lv_type_int64(Visitor *v, const char *name, int64_t *obj,
457+
static bool lv_type_int64(Visitor *v, const char *name, int64_t *obj,
457458
Error **errp)
458459
{
459460
lv_print_key(v, name);
460461
printf("%" PRIi64, *obj);
462+
return true;
461463
}
462464

463-
static void lv_type_uint64(Visitor *v, const char *name, uint64_t *obj,
465+
static bool lv_type_uint64(Visitor *v, const char *name, uint64_t *obj,
464466
Error **errp)
465467
{
466468
lv_print_key(v, name);
467469
printf("%" PRIu64, *obj);
470+
return true;
468471
}
469472

470-
static void lv_type_bool(Visitor *v, const char *name, bool *obj, Error **errp)
473+
static bool lv_type_bool(Visitor *v, const char *name, bool *obj, Error **errp)
471474
{
472475
lv_print_key(v, name);
473476
printf("%s", *obj ? "on" : "off");
477+
return true;
474478
}
475479

476-
static void lv_type_str(Visitor *v, const char *name, char **obj, Error **errp)
480+
static bool lv_type_str(Visitor *v, const char *name, char **obj, Error **errp)
477481
{
478482
const char *str = *obj;
479483
lv_print_key(v, name);
@@ -484,6 +488,7 @@ static void lv_type_str(Visitor *v, const char *name, char **obj, Error **errp)
484488
}
485489
putchar(*str++);
486490
}
491+
return true;
487492
}
488493

489494
static void lv_complete(Visitor *v, void *opaque)

backends/cryptodev-vhost-user.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,7 @@ static void cryptodev_vhost_user_init(
209209
backend->conf.peers.ccs[i] = cc;
210210

211211
if (i == 0) {
212-
if (!qemu_chr_fe_init(&s->chr, chr, &local_err)) {
213-
error_propagate(errp, local_err);
212+
if (!qemu_chr_fe_init(&s->chr, chr, errp)) {
214213
return;
215214
}
216215
}

backends/cryptodev.c

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -154,21 +154,17 @@ cryptodev_backend_set_queues(Object *obj, Visitor *v, const char *name,
154154
void *opaque, Error **errp)
155155
{
156156
CryptoDevBackend *backend = CRYPTODEV_BACKEND(obj);
157-
Error *local_err = NULL;
158157
uint32_t value;
159158

160-
visit_type_uint32(v, name, &value, &local_err);
161-
if (local_err) {
162-
goto out;
159+
if (!visit_type_uint32(v, name, &value, errp)) {
160+
return;
163161
}
164162
if (!value) {
165-
error_setg(&local_err, "Property '%s.%s' doesn't take value '%"
166-
PRIu32 "'", object_get_typename(obj), name, value);
167-
goto out;
163+
error_setg(errp, "Property '%s.%s' doesn't take value '%" PRIu32 "'",
164+
object_get_typename(obj), name, value);
165+
return;
168166
}
169167
backend->conf.peers.queues = value;
170-
out:
171-
error_propagate(errp, local_err);
172168
}
173169

174170
static void
@@ -215,7 +211,7 @@ static void cryptodev_backend_instance_init(Object *obj)
215211
cryptodev_backend_set_queues,
216212
NULL, NULL);
217213
/* Initialize devices' queues property to 1 */
218-
object_property_set_int(obj, 1, "queues", NULL);
214+
object_property_set_int(obj, "queues", 1, NULL);
219215
}
220216

221217
static void cryptodev_backend_finalize(Object *obj)

backends/hostmem-file.c

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -110,23 +110,18 @@ static void file_memory_backend_set_align(Object *o, Visitor *v,
110110
{
111111
HostMemoryBackend *backend = MEMORY_BACKEND(o);
112112
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
113-
Error *local_err = NULL;
114113
uint64_t val;
115114

116115
if (host_memory_backend_mr_inited(backend)) {
117-
error_setg(&local_err, "cannot change property '%s' of %s",
118-
name, object_get_typename(o));
119-
goto out;
116+
error_setg(errp, "cannot change property '%s' of %s", name,
117+
object_get_typename(o));
118+
return;
120119
}
121120

122-
visit_type_size(v, name, &val, &local_err);
123-
if (local_err) {
124-
goto out;
121+
if (!visit_type_size(v, name, &val, errp)) {
122+
return;
125123
}
126124
fb->align = val;
127-
128-
out:
129-
error_propagate(errp, local_err);
130125
}
131126

132127
static bool file_memory_backend_get_pmem(Object *o, Error **errp)
@@ -140,21 +135,16 @@ static void file_memory_backend_set_pmem(Object *o, bool value, Error **errp)
140135
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
141136

142137
if (host_memory_backend_mr_inited(backend)) {
143-
144138
error_setg(errp, "cannot change property 'pmem' of %s.",
145139
object_get_typename(o));
146140
return;
147141
}
148142

149143
#ifndef CONFIG_LIBPMEM
150144
if (value) {
151-
Error *local_err = NULL;
152-
153-
error_setg(&local_err,
154-
"Lack of libpmem support while setting the 'pmem=on'"
145+
error_setg(errp, "Lack of libpmem support while setting the 'pmem=on'"
155146
" of %s. We can't ensure data persistence.",
156147
object_get_typename(o));
157-
error_propagate(errp, local_err);
158148
return;
159149
}
160150
#endif

backends/hostmem-memfd.c

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,26 +77,22 @@ memfd_backend_set_hugetlbsize(Object *obj, Visitor *v, const char *name,
7777
void *opaque, Error **errp)
7878
{
7979
HostMemoryBackendMemfd *m = MEMORY_BACKEND_MEMFD(obj);
80-
Error *local_err = NULL;
8180
uint64_t value;
8281

8382
if (host_memory_backend_mr_inited(MEMORY_BACKEND(obj))) {
84-
error_setg(&local_err, "cannot change property value");
85-
goto out;
83+
error_setg(errp, "cannot change property value");
84+
return;
8685
}
8786

88-
visit_type_size(v, name, &value, &local_err);
89-
if (local_err) {
90-
goto out;
87+
if (!visit_type_size(v, name, &value, errp)) {
88+
return;
9189
}
9290
if (!value) {
93-
error_setg(&local_err, "Property '%s.%s' doesn't take value '%"
94-
PRIu64 "'", object_get_typename(obj), name, value);
95-
goto out;
91+
error_setg(errp, "Property '%s.%s' doesn't take value '%" PRIu64 "'",
92+
object_get_typename(obj), name, value);
93+
return;
9694
}
9795
m->hugetlbsize = value;
98-
out:
99-
error_propagate(errp, local_err);
10096
}
10197

10298
static void

backends/hostmem.c

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,28 +54,24 @@ host_memory_backend_set_size(Object *obj, Visitor *v, const char *name,
5454
void *opaque, Error **errp)
5555
{
5656
HostMemoryBackend *backend = MEMORY_BACKEND(obj);
57-
Error *local_err = NULL;
5857
uint64_t value;
5958

6059
if (host_memory_backend_mr_inited(backend)) {
61-
error_setg(&local_err, "cannot change property %s of %s ",
62-
name, object_get_typename(obj));
63-
goto out;
60+
error_setg(errp, "cannot change property %s of %s ", name,
61+
object_get_typename(obj));
62+
return;
6463
}
6564

66-
visit_type_size(v, name, &value, &local_err);
67-
if (local_err) {
68-
goto out;
65+
if (!visit_type_size(v, name, &value, errp)) {
66+
return;
6967
}
7068
if (!value) {
71-
error_setg(&local_err,
69+
error_setg(errp,
7270
"property '%s' of %s doesn't take value '%" PRIu64 "'",
7371
name, object_get_typename(obj), value);
74-
goto out;
72+
return;
7573
}
7674
backend->size = value;
77-
out:
78-
error_propagate(errp, local_err);
7975
}
8076

8177
static void
@@ -254,22 +250,17 @@ static void host_memory_backend_set_prealloc_threads(Object *obj, Visitor *v,
254250
const char *name, void *opaque, Error **errp)
255251
{
256252
HostMemoryBackend *backend = MEMORY_BACKEND(obj);
257-
Error *local_err = NULL;
258253
uint32_t value;
259254

260-
visit_type_uint32(v, name, &value, &local_err);
261-
if (local_err) {
262-
goto out;
255+
if (!visit_type_uint32(v, name, &value, errp)) {
256+
return;
263257
}
264258
if (value <= 0) {
265-
error_setg(&local_err,
266-
"property '%s' of %s doesn't take value '%d'",
267-
name, object_get_typename(obj), value);
268-
goto out;
259+
error_setg(errp, "property '%s' of %s doesn't take value '%d'", name,
260+
object_get_typename(obj), value);
261+
return;
269262
}
270263
backend->prealloc_threads = value;
271-
out:
272-
error_propagate(errp, local_err);
273264
}
274265

275266
static void host_memory_backend_init(Object *obj)

backends/rng.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ static bool rng_backend_prop_get_opened(Object *obj, Error **errp)
4848

4949
static void rng_backend_complete(UserCreatable *uc, Error **errp)
5050
{
51-
object_property_set_bool(OBJECT(uc), true, "opened", errp);
51+
object_property_set_bool(OBJECT(uc), "opened", true, errp);
5252
}
5353

5454
static void rng_backend_prop_set_opened(Object *obj, bool value, Error **errp)

0 commit comments

Comments
 (0)