diff -r 597aaf25e343 -r e7d2d738d3c2 kernel/eka/drivers/usbc/d_usbc.cpp --- a/kernel/eka/drivers/usbc/d_usbc.cpp Fri Mar 12 15:50:11 2010 +0200 +++ b/kernel/eka/drivers/usbc/d_usbc.cpp Mon Mar 15 12:45:50 2010 +0200 @@ -1959,7 +1959,12 @@ // Parcel out the memory between endpoints TUint8* newAddr = reinterpret_cast(chunk->LinearAddress()); __KTRACE_OPT(KUSB, Kern::Printf("SetupInterfaceMemory alloc new chunk=0x%x, size=%d", newAddr,bufSizes[chunkInd])); - chunkChanged = (newAddr != oldAddr); + // The check is important to avoid chunkChanged to be corrupted. + // This code change is to fix the problem that one chunk is used by multiple interfaces. + if(!chunkChanged) + { + chunkChanged = (newAddr != oldAddr); + } aHwChunks[chunkInd] = chunk; } chunkInd++;