Gerd Hoffmann <kra...@redhat.com> writes: >> pci_add nic -net use either the ID or option "name" of qemu_net_opts. >> And there's our hole. Reproducible with "-net user -net nic,id=foo >> -device lsi,id=foo". > > Oh. Well. Yes, better plug that. > >> @@ -242,6 +243,10 @@ DeviceState *qdev_device_add(QemuOpts *opts) >> qdev = qdev_create_from_info(bus, info); >> id = qemu_opts_id(opts); >> if (id) { >> + if (qdev_find_recursive(main_system_bus, id)) { >> + qerror_report(QERR_DUPLICATE_ID, id, "device"); >> + return NULL; >> + } >> qdev->id = id; >> } >> if (qemu_opt_foreach(opts, set_property, qdev, 1) != 0) { > > Looks good.. > > Acked-by: Gerd Hoffmann <kra...@redhat.com>
I'll repost it as a well-formed patch. While there, I'll outlaw "/". What about requiring IDs to start with a letter? Just in case we ever want to add alias names that must not clash with user-specified IDs.