reactos/ntoskrnl
George Bișoc fe23a4aaeb
[NTOS:CM] Lock the entire registry down when we unload a hive
The PR #6649 which fixed an issue with orphaned KCBs leaking in memory which also pointed to unloaded registry hives, it also brought a problem.
In CmpEnumerateOpenSubKeys there is a risk of getting hit by a deadlock as we enumerate the cache table to remove empty cache entries.

Fundamentally CmpEnumerateOpenSubKeys locks down a KCB from cache for exclusive use in order to tear down its contents from memory but it doesn't address the fact a KCB might have already been locked in the same calling thread, leading to a recursion.
This leads to random hangs when unloading a hive during system startup (tipically on a clean install).

The solution here is to simply lock the whole registry when we unload a hive so that we don't have to worry the KCBs are getting tampered by anybody else. This also simplifies the code.
Although locking the entire registry while other apps are doing registry related operations to other hives can cause overhead. If this turns out to be bad then we have to rethink the locking mechanism here.

CORE-19539
2024-06-01 16:17:47 +02:00
..
cache [NTOS:Mm] Fix race condition in _MmSetPageEntrySectionSegment 2023-07-29 14:00:44 +03:00
cc [NTOS:CC] Restore unlock/reacquire locks around MmPageOutPhysicalAddress (#5735) 2024-04-30 13:59:50 -05:00
config [NTOS:CM] Lock the entire registry down when we unload a hive 2024-06-01 16:17:47 +02:00
dbgk [NTOSKRNL] Regroup the pool allocation tags in one dedicated place 2021-12-27 18:57:03 +01:00
ex [NTOS:EX] Various fixes for Daylight Saving Time transitions (#5868) 2024-05-05 21:32:04 -05:00
fsrtl [NTOS] Properly implement and use FsRtlAcquireFileForModWriteEx 2022-11-02 19:41:04 +01:00
fstub [NTOS:FSTUB] Pack the MASTER_BOOT_RECORD structure (#6416) 2024-02-08 01:02:19 +03:00
inbv [NTOS:EX] Fix a loop bug 2024-03-19 07:43:20 +01:00
include [NTOS:CM] Lock the entire registry down when we unload a hive 2024-06-01 16:17:47 +02:00
io [NTOS:IO] IoDisconnectInterrupt(): Switch to ExFreePoolWithTag() (#6503) 2024-05-05 17:03:42 +02:00
kd [NTOS:KD] Fix release builds. 2023-08-31 17:10:34 +02:00
kd64 [NTOS:KE/x64] Implement Kd processor switching 2024-04-23 15:50:06 +02:00
kdbg [NTOS:KD:KDBG] Integration into KD framework (Part 2/3) 2023-08-31 16:09:49 +02:00
ke [NTOS:IO] IoConnectInterrupt(): Fix default spinlock initialization (#6503) 2024-05-05 17:03:20 +02:00
lpc [NTOS:LPC] Fix input parameter for ProbeAndCaptureUnicodeString (#5815) 2023-10-23 18:18:45 +02:00
mm [NTOS:MM] section.c: some trivial cleanup (#5651) 2024-05-21 11:08:40 +02:00
ntkrnlmp [CMAKE] Use the "kernel" module type for ntoskrnl and ntkrnlmp 2021-03-23 11:18:43 +01:00
ob [NTOS:OB] Fix the SAL2 annotation of ObQueryTypeInfo 2023-04-22 17:18:57 +02:00
po [NTOS:PO] Set SystemBatteriesPresent when having a battery device in the system 2024-02-05 18:04:02 +01:00
ps [NTOS:MM/PS] Remove code duplication between LookupEntryPoint/MiLocateExportName/MiFindExportedRoutineByName. (#4918) 2023-08-29 17:26:57 +02:00
rtl [RTL] Minor formatting, remove redundant 'return'. 2023-11-16 17:06:40 +01:00
se [NTOS:SE] Mute the access denied DPRINTs 2023-10-04 18:04:30 +02:00
tests Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
vdm [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
vf Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
wmi [REACTOS] Fix traces with missing arguments. 2021-11-21 12:57:35 -05:00
CMakeLists.txt [CMAKE] Elimitate the use of GCC and CLANG variables 2022-05-27 01:37:34 +03:00
guid.c [NTOSKRNL] Rewrite IoAssignDriveLetters to make NT5 compliant 2019-10-21 18:28:40 +02:00
KrnlFun.c Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
ntdll.S Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
ntos.cmake [NTOS:KE/x64] Implement processor freeze code 2024-04-23 15:50:06 +02:00
ntoskrnl.rc [NTOS:INBV] Isolate the bitmap resources pertaining to the boot theme/animation into their resource sub-file. 2023-12-24 22:39:36 +01:00
ntoskrnl.spec [MSVCRT][NTDLL][NTOS] Add import aliases for _swprintf and _vswprintf 2024-05-22 17:55:38 +02:00
sysfuncs.lst Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00