OSDN Git Service

qom: use correct field name when getting/setting alias properties
authorPaolo Bonzini <pbonzini@redhat.com>
Sun, 18 Jul 2021 06:50:44 +0000 (08:50 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 23 Jul 2021 16:17:17 +0000 (18:17 +0200)
commitcbc94d9702882128c52b72b252b8eb775b0e73af
tree901a0d71b2bd0cfab41cd947e54e0e95938d630f
parent18fa3ebc45262cebc7c9f0ba6f717452bdc51db7
qom: use correct field name when getting/setting alias properties

Alias targets have a different name than the alias property itself
(e.g. a machine's pflash0 might be an alias of a property named 'drive').
When the target's getter or setter invokes the visitor, it will use
a different name than what the caller expects, and the visitor will
not be able to find it (or will consume erroneously).

The solution is for alias getters and setters to wrap the incoming
visitor, and forward the sole field that the target is expecting while
renaming it appropriately.

This bug has been there forever, but it was exposed after -M parsing
switched from QemuOptions and StringInputVisitor to keyval and
QObjectInputVisitor.  Before, the visitor ignored the name. Now, it
checks "drive" against what was passed on the command line and finds
that no such property exists.

Fixes: https://gitlab.com/qemu-project/qemu/-/issues/484
Reported-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
qom/object.c