From: David Brownell Date: Wed, 25 May 2005 00:51:52 +0000 (-0700) Subject: [PATCH] USB gadget: drain rndis response queue on disconnect X-Git-Tag: v2.6.13-rc1~51^2~8^2~13 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=486e2df6ce213d0c776befdf3fe5ffc61dd61688;p=linux-2.6 [PATCH] USB gadget: drain rndis response queue on disconnect Drain the rndis response queue on disconnect. This fixes a problem in which an rndis response left in the queue from a previous session could cause a subsequent session to fail. Signed-off-by: Andy Lowe Signed-off-by: David Brownell Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/gadget/rndis.c b/drivers/usb/gadget/rndis.c index c9a0af29ec..06b6eba925 100644 --- a/drivers/usb/gadget/rndis.c +++ b/drivers/usb/gadget/rndis.c @@ -1025,11 +1025,17 @@ int rndis_signal_disconnect (int configNr) void rndis_uninit (int configNr) { + u8 *buf; + u32 length; + if (configNr >= RNDIS_MAX_CONFIGS) return; rndis_per_dev_params [configNr].used = 0; rndis_per_dev_params [configNr].state = RNDIS_UNINITIALIZED; - return; + + /* drain the response queue */ + while ((buf = rndis_get_next_response(configNr, &length))) + rndis_free_response(configNr, buf); } void rndis_set_host_mac (int configNr, const u8 *addr)