OSDN Git Service

Drivers: hv: utils: Invoke the poll function after handshake
authorK. Y. Srinivasan <kys@microsoft.com>
Tue, 15 Dec 2015 00:01:57 +0000 (16:01 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 20 Oct 2018 07:52:38 +0000 (09:52 +0200)
commit 2d0c3b5ad739697a68dc8a444f5b9f4817cf8f8f upstream.

When the handshake with daemon is complete, we should poll the channel since
during the handshake, we will not be processing any messages. This is a
potential bug if the host is waiting for a response from the guest.
I would like to thank Dexuan for pointing this out.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Dexuan Cui <decui@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hv/hv_kvp.c
drivers/hv/hv_snapshot.c

index ce4d3a9..b97ef3e 100644 (file)
@@ -155,7 +155,7 @@ static int kvp_handle_handshake(struct hv_kvp_msg *msg)
        pr_debug("KVP: userspace daemon ver. %d registered\n",
                 KVP_OP_REGISTER);
        kvp_register(dm_reg_value);
-       kvp_transaction.state = HVUTIL_READY;
+       hv_poll_channel(kvp_transaction.recv_channel, kvp_poll_wrapper);
 
        return 0;
 }
index faad79a..c5fb249 100644 (file)
@@ -114,7 +114,7 @@ static int vss_handle_handshake(struct hv_vss_msg *vss_msg)
        default:
                return -EINVAL;
        }
-       vss_transaction.state = HVUTIL_READY;
+       hv_poll_channel(vss_transaction.recv_channel, vss_poll_wrapper);
        pr_debug("VSS: userspace daemon ver. %d registered\n", dm_reg_value);
        return 0;
 }