[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 <[EMAIL PROTECTED]>
Signed-off-by: David Brownell <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

---
commit 486e2df6ce213d0c776befdf3fe5ffc61dd61688
tree 70a345f23a4745ec02e82f0228c879914b29451e
parent 45e45ab45c266642276d01e56d9fb5dccbfad960
author David Brownell <[EMAIL PROTECTED]> Tue, 24 May 2005 17:51:52 -0700
committer Greg Kroah-Hartman <[EMAIL PROTECTED]> Mon, 27 Jun 2005 14:44:00 -0700

 drivers/usb/gadget/rndis.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/gadget/rndis.c b/drivers/usb/gadget/rndis.c
--- a/drivers/usb/gadget/rndis.c
+++ b/drivers/usb/gadget/rndis.c
@@ -1025,11 +1025,17 @@ int rndis_signal_disconnect (int configN
 
 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)



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op=click
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to