reactos/ntoskrnl/config
George Bișoc 697a52aa33
[NTOS:CM] Do not acquire the lock twice when the Object Manager calls CmpSecurityMethod
Whenever a security request is invoked into a key object, such as when requesting
information from its security descriptor, the Object Manager will execute
the CmpSecurityMethod method to do the job.

The problem is that CmpSecurityMethod is not aware if the key control block
of the key body already has a lock acquired which means the function will attempt
to acquire a lock again, leading to a deadlock. This happens if the same
calling thread locks the KCB but it also wants to acquire security information
with ObCheckObjectAccess in CmpDoOpen.

Windows has a hack in CmpSecurityMethod where the passed KCB pointer is ORed
with a bitfield mask to avoid locking in all cases. This is ugly because it negates
every thread to acquire a lock if at least one has it.
2023-10-01 20:06:02 +02:00
..
arm Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
i386 [NTOS] "Bugzilla" --> "Jira" 2023-04-05 03:33:41 +02:00
cmalloc.c [NTOS:CM] Simplify CmpDelayAllocBucketLock code a bit (#5729) 2023-09-28 11:39:13 +02:00
cmapi.c [NTOS:CM] Cleanup the hive in case linking it to master fails (#4969) 2023-01-03 16:48:03 +01:00
cmboot.c [NTOS:CM] Adapt cmboot.c for usage in NT/ReactOS bootloader. 2022-04-16 18:37:45 +02:00
cmcheck.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
cmconfig.c [NTOS:CONFIG] Use correct "Interface" variable type; use InterfaceTypeUndefined instead of -1. 2023-06-25 21:25:06 +02:00
cmcontrl.c [REACTOS] Cleanup INIT and some PAGE section allocations 2020-11-02 21:45:31 +03:00
cmdata.c [NTOS:EX] Initialize ExpResourceTimeoutCount also via the "Session Manager/ResourceTimeoutCount" registry value (#4089) 2023-09-21 13:33:28 +02:00
cmdelay.c [REACTOS] Cleanup INIT and some PAGE section allocations 2020-11-02 21:45:31 +03:00
cmhook.c [REACTOS] Cleanup INIT and some PAGE section allocations 2020-11-02 21:45:31 +03:00
cmhvlist.c [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
cminit.c [NTOS:CM] Consistently use synchronous I/O for registry hives. 2022-11-20 16:02:39 -05:00
cmkcbncb.c [NTOS:CM] Implement locking/unlocking of KCBs in an array 2023-10-01 20:06:01 +02:00
cmlazy.c [NTOSKRNL] Mute some good-path log-spam, no functional change 2023-09-06 14:53:53 +02:00
cmmapvw.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
cmnotify.c [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
cmparse.c [NTOS:CM] Do not acquire the lock twice when the Object Manager calls CmpSecurityMethod 2023-10-01 20:06:02 +02:00
cmquota.c [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
cmse.c [NTOS:CM] Do not acquire the lock twice when the Object Manager calls CmpSecurityMethod 2023-10-01 20:06:02 +02:00
cmsecach.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
cmsysini.c [NTOS:CM] Do not acquire the lock twice when the Object Manager calls CmpSecurityMethod 2023-10-01 20:06:02 +02:00
cmvalche.c [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
cmwraprs.c [NTOS:CM] Consistently use synchronous I/O for registry hives. 2022-11-20 16:02:39 -05:00
ntapi.c [NTOS:CONFIG] Fix NtSetValueKey data probing 2020-02-23 21:35:57 +01:00