https://git.reactos.org/?p=reactos.git;a=commitdiff;h=0a80b77e766964e84e38a4...
commit 0a80b77e766964e84e38a4559956ffc30d32786b Author: Giannis Adamopoulos gadamopoulos@reactos.org AuthorDate: Fri Jan 4 01:22:44 2019 +0200 Commit: Giannis Adamopoulos gadamopoulos@reactos.org CommitDate: Fri Jan 4 13:29:26 2019 +0200
[WINSRV] usersrv: Simplify sanity checks in UserClientShutdown UserClientShutdown will never be called for csrss so we don't need to have a check for that. The existing check was broken and wasn't doing anything anyway. Handle processing winlogon by doing nothing so that consrv won't be bothered about it. --- win32ss/user/winsrv/usersrv/shutdown.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/win32ss/user/winsrv/usersrv/shutdown.c b/win32ss/user/winsrv/usersrv/shutdown.c index c73a535ffb..539ef2a932 100644 --- a/win32ss/user/winsrv/usersrv/shutdown.c +++ b/win32ss/user/winsrv/usersrv/shutdown.c @@ -770,15 +770,17 @@ UserClientShutdown(IN PCSR_PROCESS CsrProcess, return CsrShutdownNonCsrProcess; }
- /* Do not kill Winlogon or CSRSS */ - if (CsrProcess->ClientId.UniqueProcess == NtCurrentProcess() || - CsrProcess->ClientId.UniqueProcess == UlongToHandle(LogonProcessId)) + /* Do not kill Winlogon */ + if (CsrProcess->ClientId.UniqueProcess == UlongToHandle(LogonProcessId)) { DPRINT("Not killing %s; CsrProcess->ShutdownFlags = %lu\n", CsrProcess->ClientId.UniqueProcess == NtCurrentProcess() ? "CSRSS" : "Winlogon", CsrProcess->ShutdownFlags);
- return CsrShutdownNonCsrProcess; + /* Returning CsrShutdownCsrProcess means that we handled this process by doing nothing */ + /* This will mark winlogon as processed so consrv won't be notified again for it */ + CsrDereferenceProcess(CsrProcess); + return CsrShutdownCsrProcess; }
/* Notify the process for shutdown if needed */