[ros-dev] [ros-diffs] [rmessiant] 53729: [NTOSKRNL] Disable normal APC delivery while acquiring/releasing a heap lock. Also, BOOLEAN != NTSTATUS.
Timo Kreuzer
timo.kreuzer at web.de
Sun Sep 18 09:36:14 UTC 2011
Am 17.09.2011 22:26, schrieb rmessiant at svn.reactos.org:
> Author: rmessiant
> Date: Sat Sep 17 20:26:31 2011
> New Revision: 53729
>
> URL: http://svn.reactos.org/svn/reactos?rev=53729&view=rev
> Log:
> [NTOSKRNL]
> Disable normal APC delivery while acquiring/releasing a heap lock. Also, BOOLEAN != NTSTATUS.
>
>
> Modified:
> trunk/reactos/ntoskrnl/rtl/libsupp.c
>
> Modified: trunk/reactos/ntoskrnl/rtl/libsupp.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/rtl/libsupp.c?rev=53729&r1=53728&r2=53729&view=diff
> ==============================================================================
> --- trunk/reactos/ntoskrnl/rtl/libsupp.c [iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/rtl/libsupp.c [iso-8859-1] Sat Sep 17 20:26:31 2011
> @@ -168,7 +168,10 @@
> RtlEnterHeapLock(
> PHEAP_LOCK Lock)
> {
> - return ExAcquireResourceExclusive(&Lock->Resource, TRUE);
> + KeEnterCriticalRegion();
> + ExAcquireResourceExclusive(&Lock->Resource, TRUE);
> + KeLeaveCriticalRegion();
> + return STATUS_SUCCESS;
> }
>
> NTSTATUS
> @@ -185,7 +188,9 @@
> RtlLeaveHeapLock(
> PHEAP_LOCK Lock)
> {
> + KeEnterCriticalRegion();
> ExReleaseResource(&Lock->Resource);
> + KeLeaveCriticalRegion();
> return STATUS_SUCCESS;
> }
>
Why enable APC delivery after the resource is acquired?
It should stay disabled to prevent deadlocks.
More information about the Ros-dev
mailing list