Bug 1769807 - Ensure Win32k state initialized before content launch r=bobowen
Win32k Lockdown state must be initialized on the main thread, but currently a process launcher may be the first thing to read it on the IPC Thread Initializing Win32k Lockdown state also relies on the gfxPlatform being initialized, but that also isn't explicit anywhere. This patch ensures both things are true: Always ensure that Win32k State is initialized before queuing a process launch to the IPC Thread, and always ensure that gfxPlatform is initialized before attempting to read the gfx state. Differential Revision: https://phabricator.services.mozilla.com/D146821
This commit is contained in:
@@ -594,6 +594,10 @@ void GeckoChildProcessHost::PrepareLaunch() {
|
||||
# if defined(MOZ_SANDBOX)
|
||||
// We need to get the pref here as the process is launched off main thread.
|
||||
if (mProcessType == GeckoProcessType_Content) {
|
||||
// Win32k Lockdown state must be initialized on the main thread.
|
||||
// This is our last chance to do it before it is read on the IPC Launch
|
||||
// thread
|
||||
GetWin32kLockdownState();
|
||||
mSandboxLevel = GetEffectiveContentSandboxLevel();
|
||||
mEnableSandboxLogging =
|
||||
Preferences::GetBool("security.sandbox.logging.enabled");
|
||||
|
||||
@@ -698,7 +698,7 @@ nsIXULRuntime::ContentWin32kLockdownState GetLiveWin32kLockdownState() {
|
||||
// HasUserValue The Pref functions can only be called on main thread
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
mozilla::EnsureWin32kInitialized();
|
||||
gfx::gfxVars::Initialize();
|
||||
gfxPlatform::GetPlatform();
|
||||
|
||||
if (gSafeMode) {
|
||||
return nsIXULRuntime::ContentWin32kLockdownState::DisabledBySafeMode;
|
||||
|
||||
Reference in New Issue
Block a user