Skip to content

Commit 92adf9d

Browse files
Markus Armbrusterkevmw
Markus Armbruster
authored andcommitted
block: Clean up a misuse of qobject_to() in .bdrv_co_create_opts()
The following pattern occurs in the .bdrv_co_create_opts() methods of parallels, qcow, qcow2, qed, vhdx and vpc: qobj = qdict_crumple_for_keyval_qiv(qdict, errp); qobject_unref(qdict); qdict = qobject_to(QDict, qobj); if (qdict == NULL) { ret = -EINVAL; goto done; } v = qobject_input_visitor_new_keyval(QOBJECT(qdict)); [...] ret = 0; done: qobject_unref(qdict); [...] return ret; If qobject_to() fails, we return failure without setting errp. That's wrong. As far as I can tell, it cannot fail here. Clean it up anyway, by removing the useless conversion. Signed-off-by: Markus Armbruster <[email protected]> Reviewed-by: Kevin Wolf <[email protected]> Signed-off-by: Kevin Wolf <[email protected]>
1 parent 374c524 commit 92adf9d

File tree

6 files changed

+24
-30
lines changed

6 files changed

+24
-30
lines changed

block/parallels.c

+4-5
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ static int coroutine_fn parallels_co_create_opts(const char *filename,
616616
BlockdevCreateOptions *create_options = NULL;
617617
Error *local_err = NULL;
618618
BlockDriverState *bs = NULL;
619-
QDict *qdict = NULL;
619+
QDict *qdict;
620620
QObject *qobj;
621621
Visitor *v;
622622
int ret;
@@ -654,14 +654,13 @@ static int coroutine_fn parallels_co_create_opts(const char *filename,
654654
qdict_put_str(qdict, "file", bs->node_name);
655655

656656
qobj = qdict_crumple_for_keyval_qiv(qdict, errp);
657-
qobject_unref(qdict);
658-
qdict = qobject_to(QDict, qobj);
659-
if (qdict == NULL) {
657+
if (!qobj) {
660658
ret = -EINVAL;
661659
goto done;
662660
}
663661

664-
v = qobject_input_visitor_new_keyval(QOBJECT(qdict));
662+
v = qobject_input_visitor_new_keyval(qobj);
663+
qobject_unref(qobj);
665664
visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err);
666665
visit_free(v);
667666

block/qcow.c

+4-5
Original file line numberDiff line numberDiff line change
@@ -946,7 +946,7 @@ static int coroutine_fn qcow_co_create_opts(const char *filename,
946946
{
947947
BlockdevCreateOptions *create_options = NULL;
948948
BlockDriverState *bs = NULL;
949-
QDict *qdict = NULL;
949+
QDict *qdict;
950950
QObject *qobj;
951951
Visitor *v;
952952
const char *val;
@@ -998,14 +998,13 @@ static int coroutine_fn qcow_co_create_opts(const char *filename,
998998
qdict_put_str(qdict, "file", bs->node_name);
999999

10001000
qobj = qdict_crumple_for_keyval_qiv(qdict, errp);
1001-
qobject_unref(qdict);
1002-
qdict = qobject_to(QDict, qobj);
1003-
if (qdict == NULL) {
1001+
if (!qobj) {
10041002
ret = -EINVAL;
10051003
goto fail;
10061004
}
10071005

1008-
v = qobject_input_visitor_new_keyval(QOBJECT(qdict));
1006+
v = qobject_input_visitor_new_keyval(qobj);
1007+
qobject_unref(qobj);
10091008
visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err);
10101009
visit_free(v);
10111010

block/qcow2.c

+4-5
Original file line numberDiff line numberDiff line change
@@ -3080,7 +3080,7 @@ static int coroutine_fn qcow2_co_create_opts(const char *filename, QemuOpts *opt
30803080
Error **errp)
30813081
{
30823082
BlockdevCreateOptions *create_options = NULL;
3083-
QDict *qdict = NULL;
3083+
QDict *qdict;
30843084
QObject *qobj;
30853085
Visitor *v;
30863086
BlockDriverState *bs = NULL;
@@ -3153,14 +3153,13 @@ static int coroutine_fn qcow2_co_create_opts(const char *filename, QemuOpts *opt
31533153

31543154
/* Now get the QAPI type BlockdevCreateOptions */
31553155
qobj = qdict_crumple_for_keyval_qiv(qdict, errp);
3156-
qobject_unref(qdict);
3157-
qdict = qobject_to(QDict, qobj);
3158-
if (qdict == NULL) {
3156+
if (!qobj) {
31593157
ret = -EINVAL;
31603158
goto finish;
31613159
}
31623160

3163-
v = qobject_input_visitor_new_keyval(QOBJECT(qdict));
3161+
v = qobject_input_visitor_new_keyval(qobj);
3162+
qobject_unref(qobj);
31643163
visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err);
31653164
visit_free(v);
31663165

block/qed.c

+4-5
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,7 @@ static int coroutine_fn bdrv_qed_co_create_opts(const char *filename,
722722
Error **errp)
723723
{
724724
BlockdevCreateOptions *create_options = NULL;
725-
QDict *qdict = NULL;
725+
QDict *qdict;
726726
QObject *qobj;
727727
Visitor *v;
728728
BlockDriverState *bs = NULL;
@@ -764,14 +764,13 @@ static int coroutine_fn bdrv_qed_co_create_opts(const char *filename,
764764
qdict_put_str(qdict, "file", bs->node_name);
765765

766766
qobj = qdict_crumple_for_keyval_qiv(qdict, errp);
767-
qobject_unref(qdict);
768-
qdict = qobject_to(QDict, qobj);
769-
if (qdict == NULL) {
767+
if (!qobj) {
770768
ret = -EINVAL;
771769
goto fail;
772770
}
773771

774-
v = qobject_input_visitor_new_keyval(QOBJECT(qdict));
772+
v = qobject_input_visitor_new_keyval(qobj);
773+
qobject_unref(qobj);
775774
visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err);
776775
visit_free(v);
777776

block/vhdx.c

+4-5
Original file line numberDiff line numberDiff line change
@@ -1965,7 +1965,7 @@ static int coroutine_fn vhdx_co_create_opts(const char *filename,
19651965
Error **errp)
19661966
{
19671967
BlockdevCreateOptions *create_options = NULL;
1968-
QDict *qdict = NULL;
1968+
QDict *qdict;
19691969
QObject *qobj;
19701970
Visitor *v;
19711971
BlockDriverState *bs = NULL;
@@ -2006,14 +2006,13 @@ static int coroutine_fn vhdx_co_create_opts(const char *filename,
20062006
qdict_put_str(qdict, "file", bs->node_name);
20072007

20082008
qobj = qdict_crumple_for_keyval_qiv(qdict, errp);
2009-
qobject_unref(qdict);
2010-
qdict = qobject_to(QDict, qobj);
2011-
if (qdict == NULL) {
2009+
if (!qobj) {
20122010
ret = -EINVAL;
20132011
goto fail;
20142012
}
20152013

2016-
v = qobject_input_visitor_new_keyval(QOBJECT(qdict));
2014+
v = qobject_input_visitor_new_keyval(qobj);
2015+
qobject_unref(qobj);
20172016
visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err);
20182017
visit_free(v);
20192018

block/vpc.c

+4-5
Original file line numberDiff line numberDiff line change
@@ -1081,7 +1081,7 @@ static int coroutine_fn vpc_co_create_opts(const char *filename,
10811081
QemuOpts *opts, Error **errp)
10821082
{
10831083
BlockdevCreateOptions *create_options = NULL;
1084-
QDict *qdict = NULL;
1084+
QDict *qdict;
10851085
QObject *qobj;
10861086
Visitor *v;
10871087
BlockDriverState *bs = NULL;
@@ -1120,14 +1120,13 @@ static int coroutine_fn vpc_co_create_opts(const char *filename,
11201120
qdict_put_str(qdict, "file", bs->node_name);
11211121

11221122
qobj = qdict_crumple_for_keyval_qiv(qdict, errp);
1123-
qobject_unref(qdict);
1124-
qdict = qobject_to(QDict, qobj);
1125-
if (qdict == NULL) {
1123+
if (!qobj) {
11261124
ret = -EINVAL;
11271125
goto fail;
11281126
}
11291127

1130-
v = qobject_input_visitor_new_keyval(QOBJECT(qdict));
1128+
v = qobject_input_visitor_new_keyval(qobj);
1129+
qobject_unref(qobj);
11311130
visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err);
11321131
visit_free(v);
11331132

0 commit comments

Comments
 (0)