From 1b32b4800b1dd8985c1554453354e683a66c9ab5 Mon Sep 17 00:00:00 2001 From: Rod Widdowson Date: Wed, 12 Oct 2011 11:04:33 +0100 Subject: [PATCH] Windows AFSRDR: Log before decrementing refcount The library support package keeps count of the number of times the library code is active. When this goes to zero this means that unload of the library can continue. Although I cannot see it in the code it seems reasonable to assume that at that stage the device object might go away so (and if it doesn't do now it may in the future). This potentially renders it unsafe to do anything after InflightLibraryEvent has been signalled. This patch moves the logging up to above the decrement of the refcount. Change-Id: I9493d970cec4a025ca9e4c5542e2d838c87f7817 Reviewed-on: http://gerrit.openafs.org/5601 Reviewed-by: Derrick Brashear Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/fs/AFSLibrarySupport.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/fs/AFSLibrarySupport.cpp b/src/WINNT/afsrdr/kernel/fs/AFSLibrarySupport.cpp index 23320baa20..98ac0d471f 100644 --- a/src/WINNT/afsrdr/kernel/fs/AFSLibrarySupport.cpp +++ b/src/WINNT/afsrdr/kernel/fs/AFSLibrarySupport.cpp @@ -477,6 +477,11 @@ AFSClearLibraryRequest() __Enter { + AFSDbgLogMsg( AFS_SUBSYSTEM_LOAD_LIBRARY, + AFS_TRACE_LEVEL_VERBOSE, + "%s Inflight Count %08lX\n", + __FUNCTION__, + pDevExt->Specific.Control.InflightLibraryRequests); if( InterlockedDecrement( &pDevExt->Specific.Control.InflightLibraryRequests) == 0) { @@ -486,11 +491,6 @@ AFSClearLibraryRequest() FALSE); } - AFSDbgLogMsg( AFS_SUBSYSTEM_LOAD_LIBRARY, - AFS_TRACE_LEVEL_VERBOSE, - "%s Inflight Count %08lX\n", - __FUNCTION__, - pDevExt->Specific.Control.InflightLibraryRequests); } return ntStatus;