Hello Paul.

> Crude patch attached but i very much hope that someone other who
> understands rndis better than me will come with a real solution soon.

No real solution yet :-) Let's commit the workaround.

Do you like the attached patch?

Nelson.-
From: Paul Fertser <[email protected]>
Date: Thu, 11 Jun 2009 10:16:14 +0400
Subject: [PATCH] RNDIS: crude hack to fix oops on connecting to WXP SP2

F4t discovered that his freerunner panics on connect to his windows box.
This crude hack workarounds the problem.

Signed-off-by: Paul Fertser <[email protected]>

diff --git a/drivers/usb/gadget/rndis.c b/drivers/usb/gadget/rndis.c
index 8c26f5e..6fde06a 100644
--- a/drivers/usb/gadget/rndis.c
+++ b/drivers/usb/gadget/rndis.c
@@ -294,9 +294,22 @@ gen_ndis_query_resp (int configNr, u32 OID, u8 *buf, unsigned buf_len,
 	/* mandatory */
 	case OID_GEN_VENDOR_DESCRIPTION:
 		pr_debug("%s: OID_GEN_VENDOR_DESCRIPTION\n", __func__);
-		length = strlen (rndis_per_dev_params [configNr].vendorDescr);
-		memcpy (outbuf,
-			rndis_per_dev_params [configNr].vendorDescr, length);
+
+		if (rndis_per_dev_params[configNr].vendorDescr) {
+			length = strlen(
+				rndis_per_dev_params[configNr].vendorDescr);
+			memcpy(outbuf,
+				rndis_per_dev_params[configNr].vendorDescr,
+				length);
+		} else {
+			/*
+			 * FIXME: Openmoko hack by Paul Fertser to avoid
+			 * panic with Win XP SP2 when vendorDescr is NULL
+			 * (always ATM).
+			 */
+			length = 5;
+			memcpy(outbuf, "dummy", length);
+		}
 		retval = 0;
 		break;
 

Reply via email to