cryptospore / rpms / qemu-kvm

Forked from rpms/qemu-kvm 2 years ago
Clone

Blame SOURCES/kvm-migration-setup-bi-directional-I-O-channel-for-exec-.patch

76daa3
From 5fbe336ba7f9dd12f9eeafec136b15a4f6e02807 Mon Sep 17 00:00:00 2001
76daa3
From: "Daniel P. Berrange" <berrange@redhat.com>
76daa3
Date: Wed, 17 May 2017 12:42:07 +0200
76daa3
Subject: [PATCH 17/27] migration: setup bi-directional I/O channel for exec:
76daa3
 protocol
76daa3
76daa3
RH-Author: Daniel P. Berrange <berrange@redhat.com>
76daa3
Message-id: <20170517124207.14063-1-berrange@redhat.com>
76daa3
Patchwork-id: 75260
76daa3
O-Subject: [RHEL-7.4 qemu-kvm-rhev PATCH] migration: setup bi-directional I/O channel for exec: protocol
76daa3
Bugzilla: 1430620
76daa3
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
76daa3
RH-Acked-by: Juan Quintela <quintela@redhat.com>
76daa3
RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
76daa3
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
76daa3
76daa3
Historically the migration data channel has only needed to be
76daa3
unidirectional. Thus the 'exec:' protocol was requesting an
76daa3
I/O channel with O_RDONLY on incoming side, and O_WRONLY on
76daa3
the outgoing side.
76daa3
76daa3
This is fine for classic migration, but if you then try to run
76daa3
TLS over it, this fails because the TLS handshake requires a
76daa3
bi-directional channel.
76daa3
76daa3
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
76daa3
Reviewed-by: Juan Quintela <quintela@redhat.com>
76daa3
Signed-off-by: Juan Quintela <quintela@redhat.com>
76daa3
(cherry picked from commit 062d81f0e968fe1597474735f3ea038065027372)
76daa3
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
76daa3
---
76daa3
 migration/exec.c | 4 ++--
76daa3
 1 file changed, 2 insertions(+), 2 deletions(-)
76daa3
76daa3
diff --git a/migration/exec.c b/migration/exec.c
76daa3
index 9157721..aba9089 100644
76daa3
--- a/migration/exec.c
76daa3
+++ b/migration/exec.c
76daa3
@@ -32,7 +32,7 @@ void exec_start_outgoing_migration(MigrationState *s, const char *command, Error
76daa3
 
76daa3
     trace_migration_exec_outgoing(command);
76daa3
     ioc = QIO_CHANNEL(qio_channel_command_new_spawn(argv,
76daa3
-                                                    O_WRONLY,
76daa3
+                                                    O_RDWR,
76daa3
                                                     errp));
76daa3
     if (!ioc) {
76daa3
         return;
76daa3
@@ -59,7 +59,7 @@ void exec_start_incoming_migration(const char *command, Error **errp)
76daa3
 
76daa3
     trace_migration_exec_incoming(command);
76daa3
     ioc = QIO_CHANNEL(qio_channel_command_new_spawn(argv,
76daa3
-                                                    O_RDONLY,
76daa3
+                                                    O_RDWR,
76daa3
                                                     errp));
76daa3
     if (!ioc) {
76daa3
         return;
76daa3
-- 
76daa3
1.8.3.1
76daa3