Re: [PATCH v20 10/15] migration/channel: check that transfer is UNIX socket when "local" set
Peter Xu <[email protected]>
| Newsgroups | gmane.comp.emulators.qemu |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Jul 29, 2026 at 12:12:48PM +0300, Vladimir Sementsov-Ogievskiy wrote: > As documented, for "local", the migration channel must be direct > UNIX socket connection from source to target. We can't check for > it being "direct", but let's at least check that we deal with > UNIX socket (fd-passing supported). > > Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]> > --- > migration/channel.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/migration/channel.c b/migration/channel.c > index 1e2935f926b..537673c29e9 100644 > --- a/migration/channel.c > +++ b/migration/channel.c > @@ -214,6 +214,13 @@ void migration_channel_process_incoming(QIOChannel *ioc) > trace_migration_set_incoming_channel( > ioc, object_get_typename(OBJECT(ioc))); > > + if (migrate_local() && migrate_mode() != MIG_MODE_CPR_EXEC && > + !qio_channel_has_feature(ioc, QIO_CHANNEL_FEATURE_FD_PASS)) { > + error_setg(&local_err, > + "local migration requires a UNIX domain socket channel"); > + goto out; > + } > + > if (migrate_channel_requires_tls_upgrade(ioc)) { > migration_tls_channel_process_incoming(ioc, &local_err); > } else { > @@ -241,6 +248,16 @@ void migration_channel_connect_outgoing(MigrationState *s, QIOChannel *ioc) > { > trace_migration_set_outgoing_channel(ioc, object_get_typename(OBJECT(ioc))); > > + if (migrate_local() && migrate_mode() != MIG_MODE_CPR_EXEC && > + !qio_channel_has_feature(ioc, QIO_CHANNEL_FEATURE_FD_PASS)) { > + Error *local_err = NULL; > + > + error_setg(&local_err, > + "local migration requires a UNIX domain socket channel"); > + migration_connect_error_propagate(s, local_err); > + return; > + } > + We only need to touch migration_capabilities_and_transport_compatible()? It should work for both, and fail QMP commands directly might also be slightly better. > if (migrate_channel_requires_tls_upgrade(ioc)) { > Error *local_err = NULL; > > -- > 2.43.0 > -- Peter Xu