Branch: refs/heads/webkitglib/2.54
Home: https://github.com/WebKit/WebKit
Commit: 217e050243df05f627e58b21a20bb1e97a8e4bab
https://github.com/WebKit/WebKit/commit/217e050243df05f627e58b21a20bb1e97a8e4bab
Author: Yusuke Suzuki <[email protected]>
Date: 2026-09-07 (Mon, 07 Sep 2026)
Changed paths:
A JSTests/stress/object-create-check-insertion.js
M Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp
Log Message:
-----------
Cherry-pick [email protected] (ac9e40a7195b).
https://bugs.webkit.org/show_bug.cgi?id=317570
[JSC] ObjectCreate folding should emit checks
https://bugs.webkit.org/show_bug.cgi?id=317570
rdar://178248992
Reviewed by Yijia Huang.
When folding ObjectCreate(with-edge-checks), we are not emitting these
checks and converting it to NewObject. As a result, we missed the edge
filters and the subsequent code may rely on that. This patch correctly
inserts
these
checks.
Test: JSTests/stress/object-create-check-insertion.js
* JSTests/stress/object-create-check-insertion.js: Added.
(bitsToDouble):
(enforce):
(getKey):
(getK2):
(caller):
(trainGetKey):
(trainCaller):
(trainGetK2):
(ramp):
* Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
Identifier: [email protected]
Canonical link:
https://flagged.apple.com:443/proxy?t2=DA4x5z9gj4&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzE3Njk1LjIwOEB3ZWJraXRnbGliLzIuNTQ=&emid=b2eff566-aa75-44ea-b50f-6abdf74c34bc&c=11
Commit: 91e956415ac3836874cdd9256495aff0bb1c55e9
https://github.com/WebKit/WebKit/commit/91e956415ac3836874cdd9256495aff0bb1c55e9
Author: Anand Srinivasan <[email protected]>
Date: 2026-09-07 (Mon, 07 Sep 2026)
Changed paths:
A JSTests/wasm/stress/br-on-cast-fail-overlong-leb128.js
A
JSTests/wasm/stress/br-on-cast-overlong-leb128.js
M Source/JavaScriptCore/llint/InPlaceInterpreter64.asm
M
Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp
M Source/JavaScriptCore/wasm/WasmIPIntGenerator.h
Log Message:
-----------
Cherry-pick [email protected] (5b76326e8fc9).
https://bugs.webkit.org/show_bug.cgi?id=317349
IPInt br_on_cast/br_on_cast_fail must handle overlong LEB128 opcode
https://bugs.webkit.org/show_bug.cgi?id=317349
rdar://178289134
Reviewed by Yusuke Suzuki.
Currently IPInt implementations of br_on_cast/br_on_cast_fail assume
flags are at a fixed offset in the instruction but overlong opcodes
are legal and IPInt may use the wrong byte to load flags. This patch
makes the validator cache allowNull in metadata so IPInt no longer
loads from the instruction stream at all.
Tests: JSTests/wasm/stress/br-on-cast-fail-overlong-leb128.js
JSTests/wasm/stress/br-on-cast-overlong-leb128.js
* JSTests/wasm/stress/br-on-cast-fail-overlong-leb128.js: Added.
(uleb):
(section):
(str):
* JSTests/wasm/stress/br-on-cast-overlong-leb128.js: Added.
(uleb):
(section):
(str):
* Source/JavaScriptCore/llint/InPlaceInterpreter64.asm:
* Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp:
(JSC::Wasm::IPIntGenerator::addRefTest):
(JSC::Wasm::IPIntGenerator::addRefCast):
(JSC::Wasm::IPIntGenerator::addBranchCast):
* Source/JavaScriptCore/wasm/WasmIPIntGenerator.h:
Identifier: [email protected]
Canonical link:
https://flagged.apple.com:443/proxy?t2=DV2D2i8pY6&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzE3Njk1LjIwOUB3ZWJraXRnbGliLzIuNTQ=&emid=b2eff566-aa75-44ea-b50f-6abdf74c34bc&c=11
Commit: 9619a6b973814eac7c3a2ec638150b98c62262f5
https://github.com/WebKit/WebKit/commit/9619a6b973814eac7c3a2ec638150b98c62262f5
Author: Antti
Koivisto
<[email protected]>
Date: 2026-09-07 (Mon, 07 Sep 2026)
Changed paths:
A
LayoutTests/fast/css/font-face-worker-serialization-thread-safety-expected.txt
A LayoutTests/fast/css/font-face-worker-serialization-thread-safety.html
M
Source/WebCore/css/CSSPrimitiveValue.cpp
M Source/WebCore/css/CSSValue.h
Log Message:
-----------
Cherry-pick [email protected] (bc1c6b94e762).
https://bugs.webkit.org/show_bug.cgi?id=317654
[WebCore] Unsynchronized access to process-global
serializedPrimitiveValues() HashMap in CSSPrimitiveValue::customCSSText from
Worker thread
rdar://177596584
Reviewed by Alan Baradlay.
FontFace is Exposed=(Window,Worker), so its descriptor getters serialize
CSSPrimitiveValues off the main thread via customCSSText(), racing the main
thread on the unsynchronized process-global serialization map and the
m_hasCachedCSSText flag. A concurrent HashTable rehash can free the
backing
buffer while another thread holds a bucket pointer, producing a
heap-use-after-free or double-free.
Only memoize on the main thread; other threads serialize directly without
touching the shared state. Move m_hasCachedCSSText out of
the bit-field group so
the main thread can set it without racing reads of the adjacent bits of a
shared
static value.
Test: fast/css/font-face-worker-serialization-thread-safety.html
*
LayoutTests/fast/css/font-face-worker-serialization-thread-safety-expected.txt:
Added.
* LayoutTests/fast/css/font-face-worker-serialization-thread-safety.html:
Added.
* Source/WebCore/css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::~CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::customCSSText const):
* Source/WebCore/css/CSSValue.h:
Identifier:
[email protected]
Canonical
link:
https://flagged.apple.com:443/proxy?t2=DF3H4Z9Pv4&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzE3Njk1LjIxMEB3ZWJraXRnbGliLzIuNTQ=&emid=b2eff566-aa75-44ea-b50f-6abdf74c34bc&c=11
Commit: 9d899104d9b0ba8409f810a342d07c83b6116ba6
https://github.com/WebKit/WebKit/commit/9d899104d9b0ba8409f810a342d07c83b6116ba6
Author: Antoine Quint
<[email protected]>
Date: 2026-09-07 (Mon, 07 Sep 2026)
Changed paths:
A
LayoutTests/webanimations/threaded-animations/offset-path-shape-cache-thread-safety-crash-expected.txt
A
LayoutTests/webanimations/threaded-animations/offset-path-shape-cache-thread-safety-crash.html
A
LayoutTests/webanimations/threaded-animations/resources/offset-path-shape-cache-thread-safety-popup.html
M
Source/WebCore/platform/animation/values/shapes/AcceleratedEffectCircleFunction.cpp
M
Source/WebCore/platform/animation/values/shapes/AcceleratedEffectEllipseFunction.cpp
M
Source/WebCore/platform/animation/values/shapes/AcceleratedEffectInsetFunction.cpp
M
Source/WebCore/platform/animation/values/shapes/AcceleratedEffectPathFunction.cpp
M
Source/WebCore/platform/animation/values/shapes/AcceleratedEffectPolygonFunction.cpp
Log Message:
-----------
Cherry-pick [email protected] (e4960726c71e).
https://bugs.webkit.org/show_bug.cgi?id=317919
[threaded-animations] cross-thread UAF in UIProcess via unguarded static
TinyLRUCache in AcceleratedEffect polygon path cache
https://bugs.webkit.org/show_bug.cgi?id=317919
rdar://180233994
Reviewed by Chris Dumez.
Values held by AcceleratedEffectValues may be accessed both from the main
thread
and the scrolling thread on macOS.
Meanwhile, the `cachedAcceleratedEffectXXXPath()` family of functions use a
process-global
`static NeverDestroyed<TinyLRUCache<..., WebCore::Path, 4, ...>>` with no
synchronization
and return
a
`const
Path&` directly into a cache slot. TinyLRUCache::get() move-assigns
slots whose `Path` value wraps `DataRef<PathImpl>`, a concurrent
move-assignment
tears the non-atomic pointer read/swap in `Ref::operator=(Ref&&)` and
produces
a stale refcounted pointer that is then deref'd, yielding a use-after-free
or double-free of `PathImpl`.
We now
guard each cache with a static Lock and return Path by value so the cache
slot is copied out while the lock is held. `PathImpl` is
`ThreadSafeRefCounted`
so the by-value copy is just an atomic refcount bump. This matches the
existing
pattern used by `cachedCGColor()` and `UTIFromMIMEType()` for
concurrently-accessed
static `TinyLRUCache` instances.
This fix was suggested by an LLM during bug analysis, I validated its
approach.
Test:
webanimations/threaded-animations/offset-path-shape-cache-thread-safety-crash.html
*
LayoutTests/webanimations/threaded-animations/offset-path-shape-cache-thread-safety-crash-expected.txt:
Added.
*
LayoutTests/webanimations/threaded-animations/offset-path-shape-cache-thread-safety-crash.html:
Added.
*
LayoutTests/webanimations/threaded-animations/resources/offset-path-shape-cache-thread-safety-popup.html:
Added.
*
Source/WebCore/platform/animation/values/shapes/AcceleratedEffectCircleFunction.cpp:
(WebCore::cachedAcceleratedEffectCirclePath):
*
Source/WebCore/platform/animation/values/shapes/AcceleratedEffectEllipseFunction.cpp:
(WebCore::cachedAcceleratedEffectEllipsePath):
*
Source/WebCore/platform/animation/values/shapes/AcceleratedEffectInsetFunction.cpp:
(WebCore::cachedRoundedInsetPath):
*
Source/WebCore/platform/animation/values/shapes/AcceleratedEffectPathFunction.cpp:
(WebCore::cachedAcceleratedEffectTransformedByteStreamPath):
*
Source/WebCore/platform/animation/values/shapes/AcceleratedEffectPolygonFunction.cpp:
(WebCore::cachedAcceleratedEffectPolygonPath):
Identifier: [email protected]
Canonical link:
https://flagged.apple.com:443/proxy?t2=DL7y0V0Dt3&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzE3Njk1LjIxMUB3ZWJraXRnbGliLzIuNTQ=&emid=b2eff566-aa75-44ea-b50f-6abdf74c34bc&c=11
Compare: https://github.com/WebKit/WebKit/compare/fead9841406b...9d899104d9b0
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications