From f7ca82dc00e7f2c657b00d8b0da15429344ea177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 30 Aug 2011 20:46:07 +0000 Subject: [PATCH] Read the previous descriptor pointer before freeing transfer and transfer descriptors. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42701 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/busses/usb/ehci.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/busses/usb/ehci.cpp b/src/add-ons/kernel/busses/usb/ehci.cpp index b8ad5190e7..a5625a7a6a 100644 --- a/src/add-ons/kernel/busses/usb/ehci.cpp +++ b/src/add-ons/kernel/busses/usb/ehci.cpp @@ -1758,6 +1758,8 @@ EHCI::FinishIsochronousTransfers() transfer->transfer->Finished(B_OK, actualLength); + itd = itd->prev; + for (uint32 i = 0; i <= transfer->last_to_process; i++) FreeDescriptor(transfer->descriptors[i]); @@ -1771,8 +1773,8 @@ EHCI::FinishIsochronousTransfers() transferDone = true; } else { TRACE("FinishIsochronousTransfers not end of transfer\n"); + itd = itd->prev; } - itd = itd->prev; } UnlockIsochronous();