[-V3,32/32] virtio-9p: Handle unknown 9P protocol versions as per the standards.

Message ID 1269535420-31206-33-git-send-email-aneesh.kumar@linux.vnet.ibm.com
State New
Headers show

Commit Message

Aneesh Kumar K V March 25, 2010, 4:43 p.m.
From: Sripathi Kodi <sripathik@in.ibm.com>

Currently the code does BUG_ON if it receives any version other
than 9P2000.u.  However, 9P protocol says:
If the server does not understand the client's version string,
it should respond with an Rversion message (not Rerror) with
the version string the 7 characters "unknown".

Signed-off-by: Sripathi Kodi <sripathik@in.ibm.com>
Signed-off-by: M. Mohan Kumar <mohan@in.ibm.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
 hw/virtio-9p.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)


diff --git a/hw/virtio-9p.c b/hw/virtio-9p.c
index 1b791ca..e6ddb3a 100644
--- a/hw/virtio-9p.c
+++ b/hw/virtio-9p.c
@@ -725,7 +725,10 @@  static void v9fs_version(V9fsState *s, V9fsPDU *pdu)
     size_t offset = 7;
     pdu_unmarshal(pdu, offset, "ds", &msize, &version);
-    BUG_ON(strcmp(version.data, "9P2000.u") != 0);
+    if (strcmp(version.data, "9P2000.u")) {
+        v9fs_string_sprintf(&version, "unknown");
+    }
     offset += pdu_marshal(pdu, offset, "ds", msize, &version);
     complete_pdu(s, pdu, offset);