Eric Auger <eric.au...@redhat.com> writes: > object_property_add() does not allow object_property_try_add() > to gracefully fail as &error_abort is passed as an error handle. > > However such failure can easily be triggered from the QMP shell when, > for instance, one attempts to create an object with an id that already > exists: > > For instance, call twice: > object-add qom-type=memory-backend-ram id=mem1 props.size=1073741824 > and QEMU aborts. > > This behavior is undesired as a user/management application mistake > in reusing a property ID shouldn't result in loss of the VM and live > data within. > > This patch introduces two new functions, object_property_add_err() and > object_property_add_child_err() whose prototype features an error handle. > object_property_add_child_err() now gets called from user_creatable_add_type. > This solution was chosen instead of changing the prototype of existing > functions because the number of existing callers is huge. > > The error now is returned gracefully to the QMP client. > > (QEMU) object-add qom-type=memory-backend-ram id=mem2 props.size=4294967296 > {"return": {}} > (QEMU) object-add qom-type=memory-backend-ram id=mem2 props.size=4294967296 > {"error": {"class": "GenericError", "desc": "attempt to add duplicate property > 'mem2' to object (type 'container')"}} > > Signed-off-by: Eric Auger <eric.au...@redhat.com>
Recent regression, my fault. Please point that out, and add Fixes: d2623129a7dec1d3041ad1221dda1ca49c667532