Author: sginsberg Date: Mon Sep 28 07:44:49 2015 New Revision: 69391
URL: http://svn.reactos.org/svn/reactos?rev=69391&view=rev Log: [NTOS] Make SE routines use ExAllocateLocallyUniqueId instead of the system call variant (SeCreateAccessStateEx already did this, but with Exp*). Also, Ex(p)AllocateLocallyUniqueId can't fail so there is no need to return success all the time (and check for it...). This also just happens to move the first system call to phase 1 instead of 0.
Modified: trunk/reactos/ntoskrnl/ex/uuid.c trunk/reactos/ntoskrnl/include/internal/ex.h trunk/reactos/ntoskrnl/se/access.c trunk/reactos/ntoskrnl/se/token.c
Modified: trunk/reactos/ntoskrnl/ex/uuid.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/uuid.c?rev=6939... ============================================================================== --- trunk/reactos/ntoskrnl/ex/uuid.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ex/uuid.c [iso-8859-1] Mon Sep 28 07:44:49 2015 @@ -227,9 +227,9 @@ }
-NTSTATUS -NTAPI -ExpAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId) +VOID +NTAPI +ExAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId) { LARGE_INTEGER NewLuid, PrevLuid;
@@ -246,26 +246,24 @@
LocallyUniqueId->LowPart = NewLuid.u.LowPart; LocallyUniqueId->HighPart = NewLuid.u.HighPart; - - return STATUS_SUCCESS; }
/* * @implemented */ -NTSTATUS NTAPI +NTSTATUS +NTAPI NtAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId) { LUID NewLuid; KPROCESSOR_MODE PreviousMode; NTSTATUS Status; - PAGED_CODE();
+ /* Probe if user mode */ PreviousMode = ExGetPreviousMode(); - - if(PreviousMode != KernelMode) + if (PreviousMode != KernelMode) { _SEH2_TRY { @@ -280,18 +278,20 @@ _SEH2_END; }
- Status = ExpAllocateLocallyUniqueId(&NewLuid); - + /* Do the allocation */ + ExAllocateLocallyUniqueId(&NewLuid); + Status = STATUS_SUCCESS; + + /* Write back LUID to caller */ _SEH2_TRY { *LocallyUniqueId = NewLuid; } - _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + _SEH2_EXCEPT(ExSystemExceptionFilter()) { Status = _SEH2_GetExceptionCode(); } _SEH2_END; - return Status; }
Modified: trunk/reactos/ntoskrnl/include/internal/ex.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/e... ============================================================================== --- trunk/reactos/ntoskrnl/include/internal/ex.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/include/internal/ex.h [iso-8859-1] Mon Sep 28 07:44:49 2015 @@ -1388,28 +1388,40 @@ );
NTSTATUS -ExpSetTimeZoneInformation(PTIME_ZONE_INFORMATION TimeZoneInformation); - -BOOLEAN -NTAPI -ExAcquireTimeRefreshLock(BOOLEAN Wait); - -VOID -NTAPI -ExReleaseTimeRefreshLock(VOID); - -VOID -NTAPI -ExUpdateSystemTimeFromCmos(IN BOOLEAN UpdateInterruptTime, - IN ULONG MaxSepInSeconds); - -NTSTATUS -NTAPI -ExpAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId); - -VOID -NTAPI -ExTimerRundown(VOID); +ExpSetTimeZoneInformation( + IN PTIME_ZONE_INFORMATION TimeZoneInformation +); + +BOOLEAN +NTAPI +ExAcquireTimeRefreshLock( + IN BOOLEAN Wait +); + +VOID +NTAPI +ExReleaseTimeRefreshLock( + VOID +); + +VOID +NTAPI +ExUpdateSystemTimeFromCmos( + IN BOOLEAN UpdateInterruptTime, + IN ULONG MaxSepInSeconds +); + +VOID +NTAPI +ExAllocateLocallyUniqueId( + OUT LUID *LocallyUniqueId +); + +VOID +NTAPI +ExTimerRundown( + VOID +);
VOID NTAPI
Modified: trunk/reactos/ntoskrnl/se/access.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/se/access.c?rev=69... ============================================================================== --- trunk/reactos/ntoskrnl/se/access.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/se/access.c [iso-8859-1] Mon Sep 28 07:44:49 2015 @@ -403,7 +403,7 @@ /* Set Access State Data */ AccessState->RemainingDesiredAccess = AccessMask; AccessState->OriginalDesiredAccess = AccessMask; - ExpAllocateLocallyUniqueId(&AccessState->OperationID); + ExAllocateLocallyUniqueId(&AccessState->OperationID);
/* Get the Token to use */ Token = SeQuerySubjectContextToken(&AccessState->SubjectSecurityContext);
Modified: trunk/reactos/ntoskrnl/se/token.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/se/token.c?rev=693... ============================================================================== --- trunk/reactos/ntoskrnl/se/token.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/se/token.c [iso-8859-1] Mon Sep 28 07:44:49 2015 @@ -393,12 +393,7 @@ /* Zero out the buffer */ RtlZeroMemory(AccessToken, sizeof(TOKEN));
- Status = ZwAllocateLocallyUniqueId(&AccessToken->TokenId); - if (!NT_SUCCESS(Status)) - { - ObDereferenceObject(AccessToken); - return Status; - } + ExAllocateLocallyUniqueId(&AccessToken->TokenId);
AccessToken->TokenLock = &SepTokenLock;
@@ -722,13 +717,8 @@ } }
- Status = ZwAllocateLocallyUniqueId(&TokenId); - if (!NT_SUCCESS(Status)) - return Status; - - Status = ZwAllocateLocallyUniqueId(&ModifiedId); - if (!NT_SUCCESS(Status)) - return Status; + ExAllocateLocallyUniqueId(&TokenId); + ExAllocateLocallyUniqueId(&ModifiedId);
Status = ObCreateObject(PreviousMode, SeTokenObjectType,