On 11/25/20 4:02 AM, Markus Armbruster wrote: > CLI -netdev accumulates in option group "netdev". > > Before commit 08712fcb85 "net: Track netdevs in NetClientState rather > than QemuOpt", netdev_add added to the option group, and netdev_del > removed from it, both HMP and QMP. Thus, every netdev had a > corresponding QemuOpts in this option group. > > Commit 08712fcb85 dropped this for QMP netdev_add and both netdev_del. > Now a netdev has a corresponding QemuOpts only when it was created > with CLI or HMP. Two issues: > > * QMP and HMP netdev_del can leave QemuOpts behind, breaking HMP > netdev_add. Reproducer: > > $ qemu-system-x86_64 -S -display none -nodefaults -monitor stdio > QEMU 5.1.92 monitor - type 'help' for more information > (qemu) netdev_add user,id=net0 > (qemu) info network > net0: index=0,type=user,net=10.0.2.0,restrict=off > (qemu) netdev_del net0 > (qemu) info network > (qemu) netdev_add user,id=net0 > upstream-qemu: Duplicate ID 'net0' for netdev > Try "help netdev_add" for more information > > Fix by restoring the QemuOpts deletion in qmp_netdev_del(), but with > a guard, because the QemuOpts need not exist. > > * QMP netdev_add loses its "no duplicate ID" check. Reproducer: > > $ qemu-system-x86_64 -S -display none -qmp stdio > {"QMP": {"version": {"qemu": {"micro": 92, "minor": 1, "major": 5}, > "package": "v5.2.0-rc2-1-g02c1f0142c"}, "capabilities": ["oob"]}} > {"execute": "qmp_capabilities"} > {"return": {}} > {"execute": "netdev_add", "arguments": {"type": "user", "id":"net0"}} > {"return": {}} > {"execute": "netdev_add", "arguments": {"type": "user", "id":"net0"}} > {"return": {}} > > Fix by adding a duplicate ID check to net_client_init1() to replace > the lost one. The check is redundant for callers where QemuOpts > still checks, i.e. for CLI and HMP. > > Reported-by: Andrew Melnichenko <and...@daynix.com> > Fixes: 08712fcb851034228b61f75bd922863a984a4f60 > Cc: qemu-sta...@nongnu.org > Signed-off-by: Markus Armbruster <arm...@redhat.com> > --- > net/net.c | 20 ++++++++++++++++++-- > 1 file changed, 18 insertions(+), 2 deletions(-)
The adventure in QAPIfication of netdev_add has been long. Thanks for working on this. Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org