public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/chromium] epel9-next: Fix for systems with page size larger than 4k
@ 2026-08-07 16:04 Eric Curtin
0 siblings, 0 replies; only message in thread
From: Eric Curtin @ 2026-08-07 16:04 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/chromium
Branch : epel9-next
Commit : 90d57b6808a58d46802ee83cab70ed802b42e680
Author : Eric Curtin <ecurtin@redhat.com>
Date : 2023-03-07T10:41:08+00:00
Stats : +90/-0 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/chromium/c/90d57b6808a58d46802ee83cab70ed802b42e680?branch=epel9-next
Log:
Fix for systems with page size larger than 4k
Discovered on Fedora Asahi Remix by Asahi Lina.
---
diff --git a/chromium-110-LargerThan4k.patch b/chromium-110-LargerThan4k.patch
new file mode 100644
index 0000000..374f487
--- /dev/null
+++ b/chromium-110-LargerThan4k.patch
@@ -0,0 +1,86 @@
+From 96ee2a8e20bb7a7c4fb19e27dc31ff5c6a472849 Mon Sep 17 00:00:00 2001
+From: Ryan Gonzalez <rymg19@gmail.com>
+Date: Mon, 06 Mar 2023 20:22:25 -0600
+Subject: [PATCH] AddressTrackerLinux: Increase the message buffer size
+
+On non-4k-page systems, the message sizes may be too large to fit into
+the buffer, resulting in MSG_TRUNC. Instead of using the fixed 4kb size,
+follow the kernel documentation guidelines as to how large the buffer
+should be.
+
+Originally found by Asahi Lina:
+
+https://vt.social/@lina/109976892758680822
+
+Bug: None
+Change-Id: I4790435190167a706fa7490ab57706db1f4a6120
+---
+
+diff --git a/net/base/address_tracker_linux.cc b/net/base/address_tracker_linux.cc
+index 4976cae..f1a1fff 100644
+--- a/net/base/address_tracker_linux.cc
++++ b/net/base/address_tracker_linux.cc
+@@ -14,6 +14,7 @@
+ #include "base/files/scoped_file.h"
+ #include "base/functional/callback_helpers.h"
+ #include "base/logging.h"
++#include "base/memory/page_size.h"
+ #include "base/posix/eintr_wrapper.h"
+ #include "base/task/current_thread.h"
+ #include "base/threading/scoped_blocking_call.h"
+@@ -323,8 +324,30 @@
+ *address_changed = false;
+ *link_changed = false;
+ *tunnel_changed = false;
+- char buffer[4096];
+ bool first_loop = true;
++
++ // Varying sources have different opinions regarding the buffer size needed
++ // for netlink messages to avoid truncation:
++ // - The official documentation on netlink says messages are generally 8kb
++ // or the system page size, whichever is *larger*:
++ // https://www.kernel.org/doc/html/v6.2/userspace-api/netlink/intro.html#buffer-sizing
++ // - The kernel headers would imply that messages are generally the system
++ // page size or 8kb, whichever is *smaller*:
++ // https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/linux/netlink.h?h=v6.2.2#n226
++ // (libmnl follows this.)
++ // - The netlink(7) man page's example always uses a fixed size 8kb buffer:
++ // https://man7.org/linux/man-pages/man7/netlink.7.html
++ // Here, we follow the guidelines in the documentation, for two primary
++ // reasons:
++ // - Erring on the side of a larger size is the safer way to go to avoid
++ // MSG_TRUNC.
++ // - Since this is heap-allocated anyway, there's no risk to the stack by
++ // using the larger size.
++
++ constexpr size_t kMinNetlinkBufferSize = 8 * 1024;
++ std::vector<char> buffer(
++ std::max(base::GetPageSize(), kMinNetlinkBufferSize));
++
+ {
+ absl::optional<base::ScopedBlockingCall> blocking_call;
+ if (tracking_) {
+@@ -334,9 +357,10 @@
+ }
+
+ for (;;) {
+- int rv = HANDLE_EINTR(recv(netlink_fd_.get(), buffer, sizeof(buffer),
+- // Block the first time through loop.
+- first_loop ? 0 : MSG_DONTWAIT));
++ int rv =
++ HANDLE_EINTR(recv(netlink_fd_.get(), buffer.data(), buffer.size(),
++ // Block the first time through loop.
++ first_loop ? 0 : MSG_DONTWAIT));
+ first_loop = false;
+ if (rv == 0) {
+ LOG(ERROR) << "Unexpected shutdown of NETLINK socket.";
+@@ -348,7 +372,8 @@
+ PLOG(ERROR) << "Failed to recv from netlink socket";
+ return;
+ }
+- HandleMessage(buffer, rv, address_changed, link_changed, tunnel_changed);
++ HandleMessage(buffer.data(), rv, address_changed, link_changed,
++ tunnel_changed);
+ }
+ }
+ if (*link_changed || *address_changed)
diff --git a/chromium.spec b/chromium.spec
index 8c8cd9b..94535f3 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -385,6 +385,8 @@ Patch143: chromium-110-v8-gcc.patch
Patch144: chromium-111-v8-std-layout1.patch
Patch145: chromium-111-v8-std-layout2.patch
+Patch146: chromium-110-LargerThan4k.patch
+
# VAAPI
# Upstream turned VAAPI on in Linux in 86
Patch202: chromium-104.0.5112.101-enable-hardware-accelerated-mjpeg.patch
@@ -1000,6 +1002,8 @@ udev.
%patch144 -p1 -b .v8-std-layout1
%patch145 -p1 -b .v8-std-layout2
+%patch146 -p1 -b .LargerThan4k
+
%if %{use_qt}
%patch121 -p1 -b .enable-allowqt
%endif
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-07 16:04 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-07 16:04 [rpms/chromium] epel9-next: Fix for systems with page size larger than 4k Eric Curtin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox