diff -r 597aaf25e343 -r e7d2d738d3c2 kernel/eka/drivers/dma/dmapil.cpp --- a/kernel/eka/drivers/dma/dmapil.cpp Fri Mar 12 15:50:11 2010 +0200 +++ b/kernel/eka/drivers/dma/dmapil.cpp Mon Mar 15 12:45:50 2010 +0200 @@ -1,4 +1,4 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" @@ -861,7 +861,11 @@ // release threads doing CancelAll() waiters->Signal(); } - else if (!error && iController->IsIdle(*this) && !iReqQ.IsEmpty() && !iDfc.Queued()) + // (iController may be NULL here if the channel was closed in the client callback.) + else if (!error && + iController && iController->IsIdle(*this) && + !iReqQ.IsEmpty() && + !iDfc.Queued()) { // Wait for a bit. If during that time the condition goes away then it // was a 'spurious missed interrupt', in which case we just do nothing.