Title: [271808] trunk/Source/WebKit
Revision
271808
Author
[email protected]
Date
2021-01-25 12:52:12 -0800 (Mon, 25 Jan 2021)

Log Message

[Cocoa] Adjust logic for creating sandbox extensions based on GPUP flags
https://bugs.webkit.org/show_bug.cgi?id=220917

Reviewed by Brent Fulgham.

Update which GPUP flag should be used in this logic. This patch also includes many IOKit classes on macOS in the set of
classes that should be extended when the appropriate GPU flags are set. In the case they are not being extended, logging
rules have been added in the sandbox, to determine if they are being used in that case.

* UIProcess/WebPageProxy.cpp:
(WebKit::gpuIOKitClasses):
(WebKit::WebPageProxy::creationParameters):
* WebProcess/com.apple.WebProcess.sb.in:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (271807 => 271808)


--- trunk/Source/WebKit/ChangeLog	2021-01-25 20:27:06 UTC (rev 271807)
+++ trunk/Source/WebKit/ChangeLog	2021-01-25 20:52:12 UTC (rev 271808)
@@ -1,3 +1,19 @@
+2021-01-25  Per Arne  <[email protected]>
+
+        [Cocoa] Adjust logic for creating sandbox extensions based on GPUP flags
+        https://bugs.webkit.org/show_bug.cgi?id=220917
+
+        Reviewed by Brent Fulgham.
+
+        Update which GPUP flag should be used in this logic. This patch also includes many IOKit classes on macOS in the set of
+        classes that should be extended when the appropriate GPU flags are set. In the case they are not being extended, logging
+        rules have been added in the sandbox, to determine if they are being used in that case.
+
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::gpuIOKitClasses):
+        (WebKit::WebPageProxy::creationParameters):
+        * WebProcess/com.apple.WebProcess.sb.in:
+
 2021-01-25  Chris Dumez  <[email protected]>
 
         Support AbortSignal in addEventListenerOptions to unsubscribe from events

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (271807 => 271808)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2021-01-25 20:27:06 UTC (rev 271807)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2021-01-25 20:52:12 UTC (rev 271808)
@@ -7759,14 +7759,28 @@
         "AGXDeviceUserClient"_s,
         "AppleJPEGDriverUserClient"_s,
         "IOGPU"_s,
-        "IOMobileFramebufferUserClient"_s,
-        "IOSurfaceAcceleratorClient"_s,
         "IOSurfaceRootUserClient"_s,
 #endif
 #if PLATFORM(MAC) || PLATFORM(MACCATALYST)
+        "AGPMClient"_s,
+        "AppleGraphicsControlClient"_s,
+        "AppleGraphicsPolicyClient"_s,
         "AppleIntelMEUserClient"_s,
+        "AppleMGPUPowerControlClient"_s,
         "AppleSNBFBUserClient"_s,
+        "AppleUpstreamUserClient"_s,
+        "AudioAUUC"_s,
+        "IOAccelerationUserClient"_s,
+        "IOAccelerator"_s,
+        "IOAudioControlUserClient"_s,
+        "IOAudioEngineUserClient"_s,
+        "IOSurfaceRootUserClient"_s,
+        "IOSurfaceSendRight"_s,
 #endif
+#if (PLATFORM(MAC) && CPU(ARM64)) || PLATFORM(IOS_FAMILY)
+        "IOMobileFramebufferUserClient"_s,
+        "IOSurfaceAcceleratorClient"_s,
+#endif
     });
     return services;
 }
@@ -7921,7 +7935,6 @@
         || (!preferences().captureVideoInGPUProcessEnabled() && !preferences().captureVideoInUIProcessEnabled())
         || (!preferences().captureAudioInGPUProcessEnabled() && !preferences().captureAudioInUIProcessEnabled())
         || !preferences().useGPUProcessForCanvasRenderingEnabled()
-        || !preferences().useGPUProcessForDOMRenderingEnabled()
         || !preferences().useGPUProcessForWebGLEnabled())
         parameters.gpuIOKitExtensionHandles = SandboxExtension::createHandlesForIOKitClassExtensions(gpuIOKitClasses(), WTF::nullopt);
 #endif

Modified: trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in (271807 => 271808)


--- trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in	2021-01-25 20:27:06 UTC (rev 271807)
+++ trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in	2021-01-25 20:52:12 UTC (rev 271808)
@@ -118,7 +118,10 @@
     ;; OpenCL
     (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
         (allow iokit-open
-            (iokit-connection "IOAccelerator")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-connection "IOAccelerator")
+            )
             (with telemetry-backtrace)
             (apply-message-filter
                 (allow
@@ -132,12 +135,18 @@
         )
         ; else
         (allow iokit-open
-            (iokit-connection "IOAccelerator")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-connection "IOAccelerator")
+            )
         )
     )
     (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
         (allow iokit-open
-            (iokit-registry-entry-class "IOAccelerationUserClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "IOAccelerationUserClient")
+            )
             (with telemetry-backtrace)
             (apply-message-filter
                 (allow (with telemetry)
@@ -149,12 +158,18 @@
         )
         ; else
         (allow iokit-open
-            (iokit-registry-entry-class "IOAccelerationUserClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "IOAccelerationUserClient")
+            )
         )
     )
     (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
         (allow iokit-open
-            (iokit-registry-entry-class "IOSurfaceRootUserClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "IOSurfaceRootUserClient")
+            )
             (with telemetry-backtrace)
             (apply-message-filter
                 (allow
@@ -168,12 +183,18 @@
         )
         ; else
         (allow iokit-open
-            (iokit-registry-entry-class "IOSurfaceRootUserClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "IOSurfaceRootUserClient")
+            )
         )
     )
     (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
         (allow iokit-open
-            (iokit-registry-entry-class "IOSurfaceSendRight")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "IOSurfaceSendRight")
+            )
             (with telemetry-backtrace)
             (apply-message-filter
                 (allow (with telemetry)
@@ -185,7 +206,10 @@
         )
         ; else
         (allow iokit-open
-            (iokit-registry-entry-class "IOSurfaceSendRight")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "IOSurfaceSendRight")
+            )
         )
     )
 #if __MAC_OS_X_VERSION_MIN_REQUIRED < 110000
@@ -251,7 +275,10 @@
     ;; QuartzCore
     (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
         (allow iokit-open
-            (iokit-registry-entry-class "AGPMClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "AGPMClient")
+            )
             (with telemetry-backtrace)
             (apply-message-filter
                 (allow (with telemetry)
@@ -263,12 +290,18 @@
         )
         ; else
         (allow iokit-open
-            (iokit-registry-entry-class "AGPMClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "AGPMClient")
+            )
         )
     )
     (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
         (allow iokit-open
-            (iokit-registry-entry-class "AppleGraphicsControlClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "AppleGraphicsControlClient")
+            )
             (with telemetry-backtrace)
             (apply-message-filter
                 (allow
@@ -282,12 +315,18 @@
         )
         ; else
         (allow iokit-open
-            (iokit-registry-entry-class "AppleGraphicsControlClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "AppleGraphicsControlClient")
+            )
         )
     )
     (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
         (allow iokit-open
-            (iokit-registry-entry-class "AppleGraphicsPolicyClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "AppleGraphicsPolicyClient")
+            )
             (with telemetry-backtrace)
             (apply-message-filter
                 (allow (with telemetry)
@@ -299,13 +338,19 @@
         )
         ; else
         (allow iokit-open
-            (iokit-registry-entry-class "AppleGraphicsPolicyClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "AppleGraphicsPolicyClient")
+            )
         )
     )
     ;; OpenGL
     (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
         (allow iokit-open
-            (iokit-registry-entry-class "AppleMGPUPowerControlClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "AppleMGPUPowerControlClient")
+            )
             (with telemetry-backtrace)
             (apply-message-filter
                 (allow (with telemetry)
@@ -317,7 +362,10 @@
         )
         ; else
         (allow iokit-open
-            (iokit-registry-entry-class "AppleMGPUPowerControlClient")
+            (require-all
+                (extension "com.apple.webkit.extension.iokit")
+                (iokit-registry-entry-class "AppleMGPUPowerControlClient")
+            )
         )
     )
     ;; GPU bundles
@@ -895,7 +943,10 @@
 
 (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
     (allow iokit-open
-        (iokit-user-client-class "AppleUpstreamUserClient")
+        (require-all
+            (extension "com.apple.webkit.extension.iokit")
+            (iokit-user-client-class "AppleUpstreamUserClient")
+        )
         (with telemetry-backtrace)
         (apply-message-filter
             (allow (with telemetry)
@@ -907,7 +958,10 @@
     )
     ; else
     (allow iokit-open
-        (iokit-user-client-class "AppleUpstreamUserClient")
+        (require-all
+            (extension "com.apple.webkit.extension.iokit")
+            (iokit-user-client-class "AppleUpstreamUserClient")
+        )
     )
 )
 
@@ -938,7 +992,10 @@
 ;; <rdar://problem/10427451> && <rdar://problem/10808817>
 (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
     (allow iokit-open
-        (iokit-user-client-class "AudioAUUC")
+        (require-all
+            (extension "com.apple.webkit.extension.iokit")
+            (iokit-user-client-class "AudioAUUC")
+        )
         (with telemetry-backtrace)
         (apply-message-filter
             (allow (with telemetry)
@@ -950,13 +1007,19 @@
     )
     ; else
     (allow iokit-open
-        (iokit-user-client-class "AudioAUUC")
+        (require-all
+            (extension "com.apple.webkit.extension.iokit")
+            (iokit-user-client-class "AudioAUUC")
+        )
     )
 )
 
 (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
     (allow iokit-open
-        (iokit-user-client-class "IOAudioControlUserClient")
+        (require-all
+            (extension "com.apple.webkit.extension.iokit")
+            (iokit-user-client-class "IOAudioControlUserClient")
+        )
         (with telemetry-backtrace)
         (apply-message-filter
             (allow (with telemetry)
@@ -968,13 +1031,19 @@
     )
     ; else
     (allow iokit-open
-        (iokit-user-client-class "IOAudioControlUserClient")
+        (require-all
+            (extension "com.apple.webkit.extension.iokit")
+            (iokit-user-client-class "IOAudioControlUserClient")
+        )
     )
 )
 
 (if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
     (allow iokit-open
-        (iokit-user-client-class "IOAudioEngineUserClient")
+        (require-all
+            (extension "com.apple.webkit.extension.iokit")
+            (iokit-user-client-class "IOAudioEngineUserClient")
+        )
         (with telemetry-backtrace)
         (apply-message-filter
             (allow (with telemetry)
@@ -986,7 +1055,10 @@
     )
     ; else
     (allow iokit-open
-        (iokit-user-client-class "IOAudioEngineUserClient")
+        (require-all
+            (extension "com.apple.webkit.extension.iokit")
+            (iokit-user-client-class "IOAudioEngineUserClient")
+        )
     )
 )
 
@@ -996,14 +1068,13 @@
 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
         (with telemetry-backtrace)
 #endif
-        (iokit-user-client-class "IOMobileFramebufferUserClient")
-        (iokit-user-client-class "IOSurfaceAcceleratorClient") ;; <rdar://problem/63696732>
-        (iokit-user-client-class "IOSurfaceRootUserClient") ;; <rdar://problem/63696732>
-    )
-    (allow iokit-open
         (require-all
             (extension "com.apple.webkit.extension.iokit")
-            (iokit-user-client-class "AppleAVDUserClient")
+            (iokit-user-client-class
+                "AppleAVDUserClient"
+                "IOMobileFramebufferUserClient"
+                "IOSurfaceAcceleratorClient" ;; <rdar://problem/63696732>
+            )
         )
     )
 )
@@ -1737,12 +1808,57 @@
     (require-all
         (require-not (extension "com.apple.webkit.extension.iokit"))
         (iokit-registry-entry-class
-            "AppleAVDUserClient"
+            "AGPMClient"
+            "AppleGraphicsControlClient"
+            "AppleGraphicsPolicyClient"
             "AppleIntelMEUserClient"
+            "AppleMGPUPowerControlClient"
             "AppleSNBFBUserClient"
+            "IOAccelerationUserClient"
+            "IOSurfaceRootUserClient"
+            "IOSurfaceSendRight"
         )
     )
 )
+(allow iokit-open (with report)
+#if __MAC_OS_X_VERSION_MIN_REQUIRED > 110000
+    (with telemetry-backtrace)
+#endif
+    (require-all
+        (require-not (extension "com.apple.webkit.extension.iokit"))
+        (iokit-user-client-class
+            "AudioAUUC"
+            "IOAudioControlUserClient"
+            "IOAudioEngineUserClient"
+        )
+    )
+)
+(when (equal? (param "CPU") "arm64")
+    (allow iokit-open (with report)
+    #if __MAC_OS_X_VERSION_MIN_REQUIRED > 110000
+        (with telemetry-backtrace)
+    #endif
+        (require-all
+            (require-not (extension "com.apple.webkit.extension.iokit"))
+            (iokit-user-client-class
+                "AppleAVDUserClient"
+                "IOMobileFramebufferUserClient"
+                "IOSurfaceAcceleratorClient"
+            )
+        )
+    )
+)
+(allow iokit-open (with report)
+#if __MAC_OS_X_VERSION_MIN_REQUIRED > 110000
+    (with telemetry-backtrace)
+#endif
+    (require-all
+        (require-not (extension "com.apple.webkit.extension.iokit"))
+        (iokit-connection
+            "IOAccelerator"
+        )
+    )
+)
 
 ;; FIXME: Data indicates this is only needed on ARM64. This logging will confirm.
 ;; Remove when the GPU process is enabled by default
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to