summaryrefslogtreecommitdiffstats
path: root/drivers/hv/connection.c
diff options
context:
space:
mode:
authorK. Y. Srinivasan <kys@microsoft.com>2013-08-28 14:56:54 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-08-30 12:08:04 -0700
commit666b9adc801ef012612c4e43e0f44b2cdc1979cf (patch)
tree62c2227012d203b502ab669237776f5ddb19709e /drivers/hv/connection.c
parente83736c80290b8b3139ce8615a3a49acec25fcc0 (diff)
downloadlinux-666b9adc801ef012612c4e43e0f44b2cdc1979cf.tar.bz2
Drivers: hv: vmbus: Do not attempt to negoatiate a new version prematurely
The current code would attempt to negotiate a different protocol version if the current negotiation timed out. This triggers an assert in the host (on debug builds). Avoid this by negotiating a newer version only if the host properly rejects the current version being negotiated. Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/hv/connection.c')
-rw-r--r--drivers/hv/connection.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c
index ec3b8cdf1e04..8f4743ab5fb2 100644
--- a/drivers/hv/connection.c
+++ b/drivers/hv/connection.c
@@ -195,7 +195,10 @@ int vmbus_connect(void)
do {
ret = vmbus_negotiate_version(msginfo, version);
- if (ret == 0)
+ if (ret)
+ goto cleanup;
+
+ if (vmbus_connection.conn_state == CONNECTED)
break;
version = vmbus_get_next_version(version);