[PATCH v2 20/22] ntdll: Use shared loader locking in LdrDisableThreadCalloutsForDll().

Paul Gofman pgofman at codeweavers.com
Tue Oct 5 17:49:26 CDT 2021


Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
---
 dlls/ntdll/loader.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index a044b9cce27..eaca55acf65 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -1897,13 +1897,16 @@ NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE hModule)
     WINE_MODREF *wm;
     NTSTATUS    ret = STATUS_SUCCESS;
 
-    lock_loader_exclusive();
+    lock_loader_shared();
 
     wm = get_modref( hModule );
+
+    RtlAcquireSRWLockExclusive( &ldr_data_srw_lock );
     if (!wm || wm->ldr.TlsIndex != -1)
         ret = STATUS_DLL_NOT_FOUND;
     else
         wm->ldr.Flags |= LDR_NO_DLL_CALLS;
+    RtlReleaseSRWLockExclusive( &ldr_data_srw_lock );
 
     unlock_loader();
 
-- 
2.31.1




More information about the wine-devel mailing list