https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a91f5e8e4db2fc9af3d09175e537f16307db17f3

commit a91f5e8e4db2fc9af3d09175e537f16307db17f3
Author:     Doug Lyons <[email protected]>
AuthorDate: Mon Oct 25 15:21:43 2021 -0500
Commit:     GitHub <[email protected]>
CommitDate: Mon Oct 25 22:21:43 2021 +0200

    [UDFS] Fix crash on boot in release builds with UDFS removable media 
inserted (#4061) CORE-17598
    
    Changes to specific files and their effects are as follows:
    create.cpp - Allows booting past second stage with UDFS media inserted 
without BSOD
    close.cpp - Allows shutdown without hang
    dircntrl.cpp - Allows New Hardware Wizard not to hang on initial third 
phase install
---
 drivers/filesystems/udfs/close.cpp    | 24 ++++++++++++------------
 drivers/filesystems/udfs/create.cpp   |  2 +-
 drivers/filesystems/udfs/dircntrl.cpp | 12 ++++++------
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/drivers/filesystems/udfs/close.cpp 
b/drivers/filesystems/udfs/close.cpp
index 62f98188380..efd4224782b 100644
--- a/drivers/filesystems/udfs/close.cpp
+++ b/drivers/filesystems/udfs/close.cpp
@@ -921,18 +921,18 @@ UDFCloseAllXXXDelayedInDir(
     IN BOOLEAN          System
     )
 {
-    PUDF_FILE_INFO*    PassedList = NULL;
-    ULONG              PassedListSize = 0;
-    PUDF_FILE_INFO*    FoundList = NULL;
-    ULONG              FoundListSize = 0;
-    NTSTATUS           RC;
-    ULONG              i;
-    BOOLEAN            ResAcq = FALSE;
-    BOOLEAN            AcquiredVcb = FALSE;
-    UDFNTRequiredFCB*  NtReqFcb;
-    PUDF_FILE_INFO     CurFileInfo;
-    PFE_LIST_ENTRY     CurListPtr;
-    PFE_LIST_ENTRY*    ListPtrArray = NULL;
+    PUDF_FILE_INFO*         PassedList = NULL;
+    ULONG                   PassedListSize = 0;
+    PUDF_FILE_INFO*         FoundList = NULL;
+    ULONG                   FoundListSize = 0;
+    NTSTATUS                RC;
+    ULONG                   i;
+    _SEH2_VOLATILE BOOLEAN  ResAcq = FALSE;
+    _SEH2_VOLATILE BOOLEAN  AcquiredVcb = FALSE;
+    UDFNTRequiredFCB*       NtReqFcb;
+    PUDF_FILE_INFO          CurFileInfo;
+    PFE_LIST_ENTRY          CurListPtr;
+    PFE_LIST_ENTRY*         ListPtrArray = NULL;
 
     _SEH2_TRY {
 
diff --git a/drivers/filesystems/udfs/create.cpp 
b/drivers/filesystems/udfs/create.cpp
index 50d7f39d32c..79509977c1c 100644
--- a/drivers/filesystems/udfs/create.cpp
+++ b/drivers/filesystems/udfs/create.cpp
@@ -204,7 +204,7 @@ UDFCommonCreate(
     ACCESS_MASK                 DesiredAccess;
     PACCESS_STATE               AccessState;
 
-    PVCB                        Vcb = NULL;
+    _SEH2_VOLATILE PVCB         Vcb = NULL;
     _SEH2_VOLATILE BOOLEAN      AcquiredVcb = FALSE;
     BOOLEAN                     OpenExisting = FALSE;
     PERESOURCE                  Res1 = NULL;
diff --git a/drivers/filesystems/udfs/dircntrl.cpp 
b/drivers/filesystems/udfs/dircntrl.cpp
index 26099e326a7..ce6b52dcc1d 100644
--- a/drivers/filesystems/udfs/dircntrl.cpp
+++ b/drivers/filesystems/udfs/dircntrl.cpp
@@ -134,8 +134,8 @@ UDFCommonDirControl(
     PFILE_OBJECT            FileObject = NULL;
     PtrUDFFCB               Fcb = NULL;
     PtrUDFCCB               Ccb = NULL;
-    PVCB                    Vcb = NULL;
-    BOOLEAN                 AcquiredVcb = FALSE;
+    _SEH2_VOLATILE PVCB     Vcb = NULL;
+    _SEH2_VOLATILE BOOLEAN  AcquiredVcb = FALSE;
 
     TmPrint(("UDFCommonDirControl: \n"));
 //    BrutePoint();
@@ -226,8 +226,8 @@ UDFQueryDirectory(
     BOOLEAN                     PostRequest = FALSE;
     PtrUDFNTRequiredFCB         NtReqFcb = NULL;
     BOOLEAN                     CanWait = FALSE;
-    PVCB                        Vcb = NULL;
-    BOOLEAN                     AcquiredFCB = FALSE;
+    _SEH2_VOLATILE PVCB         Vcb = NULL;
+    _SEH2_VOLATILE BOOLEAN      AcquiredFCB = FALSE;
     unsigned long               BufferLength = 0;
     UNICODE_STRING              SearchPattern;
     PUNICODE_STRING             PtrSearchPattern;
@@ -696,8 +696,8 @@ UDFNotifyChangeDirectory(
     BOOLEAN                     CanWait = FALSE;
     ULONG                       CompletionFilter = 0;
     BOOLEAN                     WatchTree = FALSE;
-    PVCB                        Vcb = NULL;
-    BOOLEAN                     AcquiredFCB = FALSE;
+    _SEH2_VOLATILE PVCB         Vcb = NULL;
+    _SEH2_VOLATILE BOOLEAN      AcquiredFCB = FALSE;
     PEXTENDED_IO_STACK_LOCATION pStackLocation = (PEXTENDED_IO_STACK_LOCATION) 
IrpSp;
 
     UDFPrint(("UDFNotifyChangeDirectory\n"));

Reply via email to