public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/qt6-qtwebengine] f44: PPC/s390: Codegen - fix signed integer overdlow in Assembler:GrowBuffer
@ 2026-08-25 15:42 Jan Grulich
0 siblings, 0 replies; only message in thread
From: Jan Grulich @ 2026-08-25 15:42 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/qt6-qtwebengine
Branch : f44
Commit : a4d311c2ea6fdd51952f1ad7c4f4774c765ecb60
Author : Jan Grulich <jgrulich@redhat.com>
Date : 2026-08-25T17:41:50+02:00
Stats : +111/-20 in 3 file(s)
URL : https://src.fedoraproject.org/rpms/qt6-qtwebengine/c/a4d311c2ea6fdd51952f1ad7c4f4774c765ecb60?branch=f44
Log:
PPC/s390: Codegen - fix signed integer overdlow in Assembler:GrowBuffer
---
diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec
index 32ba45c..4dcf861 100644
--- a/qt6-qtwebengine.spec
+++ b/qt6-qtwebengine.spec
@@ -88,7 +88,7 @@
Summary: Qt6 - QtWebEngine components
Name: qt6-qtwebengine
Version: 6.11.2
-Release: 1%{?dist}
+Release: 2%{?dist}
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
# See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html
@@ -133,11 +133,11 @@ Patch5: qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch
## Upstream patches:
# https://bugreports.qt.io/browse/QTBUG-129985
Patch80: qtwebengine-fix-arm-build.patch
+Patch81: qtwebengine-codegen-fix-signed-integer-overflow-in-assembler-growbuffer.patch
## Upstreamable patches:
Patch101: qtwebengine-fix-build-against-gcc16.patch
Patch102: qtwebengine-fix-delay-signature.patch
-Patch103: qtwebengine-fix-v8-kMaximalBufferSize-private.patch
## ppc64le port
Patch200: qtwebengine-6.9-ppc64.patch
@@ -495,11 +495,11 @@ popd
## upstream patches
%patch -P80 -p1 -b .fix-arm-build
+%patch -P81 -p1 -b .codegen-fix-signed-integer-overflow-in-assembler-growbuffer
## upstreamable patches
%patch -P101 -p1 -b .fix-build-against-gcc16
%patch -P102 -p1 -b .fix-delay-signature
-%patch -P103 -p1 -b .fix-v8-kMaximalBufferSize-private
# ppc64le support
%patch -P200 -p1
@@ -859,6 +859,9 @@ done
%endif
%changelog
+* Tue Aug 25 2026 Jan Grulich <jgrulich@redhat.com> - 6.11.2-2
+- PPC/s390: Codegen - fix signed integer overdlow in Assembler:GrowBuffer
+
* Mon Aug 24 2026 Jan Grulich <jgrulich@redhat.com> - 6.11.2-1
- 6.11.2
diff --git a/qtwebengine-codegen-fix-signed-integer-overflow-in-assembler-growbuffer.patch b/qtwebengine-codegen-fix-signed-integer-overflow-in-assembler-growbuffer.patch
new file mode 100644
index 0000000..12816e1
--- /dev/null
+++ b/qtwebengine-codegen-fix-signed-integer-overflow-in-assembler-growbuffer.patch
@@ -0,0 +1,105 @@
+From 9197b407b59db8c36cc4ded4a0b8e330cadd78bd Mon Sep 17 00:00:00 2001
+From: Milad Fa <mfarazma@ibm.com>
+Date: Tue, 28 Apr 2026 13:05:23 +0000
+Subject: [PATCH] PPC/s390: [codegen] Fix signed integer overflow in
+ Assembler::GrowBuffer
+
+Port 19b8e4cb5e838e786d3883b531765b3b07514dfb
+
+Original Commit Message:
+
+ Compiling extremely large functions could cause `Assembler::GrowBuffer`
+ to calculate a negative buffer size due to a signed integer overflow
+ when doubling the size. This bypassed the out-of-memory guard and
+ resulted in a massive heap-based buffer overflow.
+
+ This CL fixes the issue by:
+ 1. Moving `kMaximalBufferSize` to `AssemblerBase` as a common constant.
+ 2. Adding a non-static helper method `ComputeNewBufferSize` to
+ `AssemblerBase` that takes a `BufferGrowthStrategy` enum flag.
+ 3. Adding a `DCHECK` to ensure the new size fits within `int` boundaries.
+ 4. Updating `GrowBuffer` in arm, arm64, ia32, and x64 to use this helper.
+ 5. Adding a check against `kMaximalBufferSize` in
+ `BaselineCompiler::AllocateBuffer` to prevent huge initial
+ allocations.
+
+R=victorgomes@chromium.org, junyan1@ibm.com
+BUG=
+LOG=N
+
+Change-Id: I12a42713627049add7c4b7e7b7ccb1b124d8e843
+Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7796624
+Reviewed-by: Victor Gomes <victorgomes@chromium.org>
+Commit-Queue: Milad Farazmand <mfarazma@ibm.com>
+Cr-Commit-Position: refs/heads/main@{#106891}
+---
+ src/codegen/ppc/assembler-ppc.cc | 5 +----
+ src/codegen/ppc/assembler-ppc.h | 3 ---
+ src/codegen/s390/assembler-s390.cc | 5 +----
+ src/codegen/s390/assembler-s390.h | 3 ---
+ 4 files changed, 2 insertions(+), 14 deletions(-)
+
+diff --git a/src/3rdparty/chromium/v8/src/codegen//ppc/assembler-ppc.cc b/src/3rdparty/chromium/v8/src/codegen//ppc/assembler-ppc.cc
+index d605e20715d5..4cdbf60a578d 100644
+--- a/src/3rdparty/chromium/v8/src/codegen//ppc/assembler-ppc.cc
++++ b/src/3rdparty/chromium/v8/src/codegen//ppc/assembler-ppc.cc
+@@ -2068,12 +2068,9 @@ void Assembler::GrowBuffer(int needed) {
+
+ // Compute new buffer size.
+ int old_size = buffer_->size();
+- int new_size = std::min(2 * old_size, old_size + 1 * MB);
++ int new_size = ComputeNewBufferSize(BufferGrowthStrategy::kDoubleCapped1MB);
+ int space = buffer_space() + (new_size - old_size);
+ new_size += (space < needed) ? needed - space : 0;
+-
+- // Some internal data structures overflow for very large buffers,
+- // they must ensure that kMaximalBufferSize is not too large.
+ if (new_size > kMaximalBufferSize) {
+ V8::FatalProcessOutOfMemory(nullptr, "Assembler::GrowBuffer");
+ }
+diff --git a/src/3rdparty/chromium/v8/src/codegen//ppc/assembler-ppc.h b/src/3rdparty/chromium/v8/src/codegen//ppc/assembler-ppc.h
+index 2295c8a2c584..5d4178c1ab36 100644
+--- a/src/3rdparty/chromium/v8/src/codegen//ppc/assembler-ppc.h
++++ b/src/3rdparty/chromium/v8/src/codegen//ppc/assembler-ppc.h
+@@ -1443,9 +1443,6 @@ class Assembler : public AssemblerBase {
+ RelocInfoWriter reloc_info_writer;
+
+ private:
+- // Avoid overflows for displacements etc.
+- static const int kMaximalBufferSize = 512 * MB;
+-
+ // Repeated checking whether the trampoline pool should be emitted is rather
+ // expensive. By default we only check again once a number of instructions
+ // has been generated.
+diff --git a/src/3rdparty/chromium/v8/src/codegen//s390/assembler-s390.cc b/src/3rdparty/chromium/v8/src/codegen//s390/assembler-s390.cc
+index db51cd96c5f2..75d6fdefa442 100644
+--- a/src/3rdparty/chromium/v8/src/codegen//s390/assembler-s390.cc
++++ b/src/3rdparty/chromium/v8/src/codegen//s390/assembler-s390.cc
+@@ -773,12 +773,9 @@ void Assembler::GrowBuffer(int needed) {
+
+ // Compute new buffer size.
+ int old_size = buffer_->size();
+- int new_size = std::min(2 * old_size, old_size + 1 * MB);
++ int new_size = ComputeNewBufferSize(BufferGrowthStrategy::kDoubleCapped1MB);
+ int space = buffer_space() + (new_size - old_size);
+ new_size += (space < needed) ? needed - space : 0;
+-
+- // Some internal data structures overflow for very large buffers,
+- // they must ensure that kMaximalBufferSize is not too large.
+ if (new_size > kMaximalBufferSize) {
+ V8::FatalProcessOutOfMemory(nullptr, "Assembler::GrowBuffer");
+ }
+diff --git a/src/3rdparty/chromium/v8/src/codegen//s390/assembler-s390.h b/src/3rdparty/chromium/v8/src/codegen//s390/assembler-s390.h
+index 5f4aca67ea5d..8cef29e287ee 100644
+--- a/src/3rdparty/chromium/v8/src/codegen//s390/assembler-s390.h
++++ b/src/3rdparty/chromium/v8/src/codegen//s390/assembler-s390.h
+@@ -1383,9 +1383,6 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
+ void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0);
+
+ private:
+- // Avoid overflows for displacements etc.
+- static const int kMaximalBufferSize = 512 * MB;
+-
+ // Relocation info generation
+ // Each relocation is encoded as a variable size value
+ static constexpr int kMaxRelocSize = RelocInfoWriter::kMaxSize;
diff --git a/qtwebengine-fix-v8-kMaximalBufferSize-private.patch b/qtwebengine-fix-v8-kMaximalBufferSize-private.patch
deleted file mode 100644
index 5e5d186..0000000
--- a/qtwebengine-fix-v8-kMaximalBufferSize-private.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/src/3rdparty/chromium/v8/src/baseline/baseline-compiler.cc b/src/3rdparty/chromium/v8/src/baseline/baseline-compiler.cc
---- a/src/3rdparty/chromium/v8/src/baseline/baseline-compiler.cc
-+++ b/src/3rdparty/chromium/v8/src/baseline/baseline-compiler.cc
-@@ -275,11 +275,11 @@ std::unique_ptr<AssemblerBuffer> AllocateBuffer(
- }
- int raw_estimated_size;
- if (!estimated_size.AssignIfValid(&raw_estimated_size) ||
-- raw_estimated_size > Assembler::kMaximalBufferSize) {
-+ raw_estimated_size > AssemblerBase::kMaximalBufferSize) {
- V8::FatalProcessOutOfMemory(nullptr, "BaselineCompiler::AllocateBuffer");
- }
- int rounded_size = RoundUp(raw_estimated_size, 4 * KB);
-- if (rounded_size > Assembler::kMaximalBufferSize) {
-+ if (rounded_size > AssemblerBase::kMaximalBufferSize) {
- V8::FatalProcessOutOfMemory(nullptr, "BaselineCompiler::AllocateBuffer");
- }
- return NewAssemblerBuffer(rounded_size);
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-25 15:42 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-25 15:42 [rpms/qt6-qtwebengine] f44: PPC/s390: Codegen - fix signed integer overdlow in Assembler:GrowBuffer Jan Grulich
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox