diff --git a/.gitignore b/.gitignore
index 5ab0702..97f5185 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
+SOURCES/kde-5.15-rollup-20211012.patch.gz
 SOURCES/qtbase-everywhere-src-5.15.2.tar.xz
diff --git a/.qt5-qtbase.metadata b/.qt5-qtbase.metadata
index 4ced115..a98c50f 100644
--- a/.qt5-qtbase.metadata
+++ b/.qt5-qtbase.metadata
@@ -1 +1,2 @@
+cd5af27701311d04f66777e184b0dcfbc9c14bc2 SOURCES/kde-5.15-rollup-20211012.patch.gz
 b5ad67fc6381ad7fae0296944734198488d096a3 SOURCES/qtbase-everywhere-src-5.15.2.tar.xz
diff --git a/SOURCES/0068-Bump-version.patch b/SOURCES/0068-Bump-version.patch
new file mode 100644
index 0000000..6720f2e
--- /dev/null
+++ b/SOURCES/0068-Bump-version.patch
@@ -0,0 +1,25 @@
+From 6344955d17e17e2398720fe60c34cfc2a4a95208 Mon Sep 17 00:00:00 2001
+From: Liang Qi <liang.qi@qt.io>
+Date: Tue, 17 Nov 2020 11:07:30 +0100
+Subject: [PATCH 068/220] Bump version
+
+Change-Id: I5697edf968dfaebe25c73899d26ed234631e55dc
+Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
+Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
+---
+ .qmake.conf | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/.qmake.conf b/.qmake.conf
+index 9476d20099..1bf1a80475 100644
+--- a/.qmake.conf
++++ b/.qmake.conf
+@@ -6,4 +6,4 @@ DEFINES += QT_NO_JAVA_STYLE_ITERATORS
+ QT_SOURCE_TREE = $$PWD
+ QT_BUILD_TREE = $$shadowed($$PWD)
+ 
+-MODULE_VERSION = 5.15.2
++MODULE_VERSION = 5.15.3
+-- 
+2.31.1
+
diff --git a/SOURCES/qt5-qtbase-5.12.1-firebird-4.0.0.patch b/SOURCES/qt5-qtbase-5.12.1-firebird-4.0.0.patch
new file mode 100644
index 0000000..9c09161
--- /dev/null
+++ b/SOURCES/qt5-qtbase-5.12.1-firebird-4.0.0.patch
@@ -0,0 +1,17 @@
+diff -up qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json.firebird qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json
+--- qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json.firebird	2019-01-28 11:11:52.000000000 -0600
++++ qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json	2019-02-03 13:41:27.392305128 -0600
+@@ -49,10 +49,11 @@
+         "ibase": {
+             "label": "InterBase",
+             "test": {},
+-            "headers": "ibase.h",
++            "headers": "ibase.h",
+             "sources": [
+                 { "libs": "-lgds32_ms", "condition": "config.win32" },
+-                { "libs": "-lgds", "condition": "!config.win32" }
++                { "libs": "-lgds", "condition": "!config.win32" },
++                { "libs": "-lfbclient", "condition": "!config.win32" }
+             ]
+         },
+         "mysql": {
diff --git a/SOURCES/qtbase-CVE-2021-38593.patch b/SOURCES/qtbase-CVE-2021-38593.patch
new file mode 100644
index 0000000..75feb11
--- /dev/null
+++ b/SOURCES/qtbase-CVE-2021-38593.patch
@@ -0,0 +1,31 @@
+From 6b400e3147dcfd8cc3a393ace1bd118c93762e0c Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Fri, 23 Jul 2021 15:53:56 +0200
+Subject: [PATCH] Improve fix for avoiding huge number of tiny dashes
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Some pathological cases were not caught by the previous fix.
+
+Fixes: QTBUG-95239
+Pick-to: 6.2 6.1 5.15
+Change-Id: I0337ee3923ff93ccb36c4d7b810a9c0667354cc5
+Reviewed-by: Robert Löhning <robert.loehning@qt.io>
+---
+ src/gui/painting/qpaintengineex.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp
+index 9fe51082..22e1b18f 100644
+--- a/src/gui/painting/qpaintengineex.cpp
++++ b/src/gui/painting/qpaintengineex.cpp
+@@ -426,7 +426,7 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen)
+         patternLength *= pw;
+         if (qFuzzyIsNull(patternLength)) {
+             pen.setStyle(Qt::NoPen);
+-        } else if (extent / patternLength > 10000) {
++        } else if (qFuzzyIsNull(extent) || extent / patternLength > 10000) {
+             // approximate stream of tiny dashes with semi-transparent solid line
+             pen.setStyle(Qt::SolidLine);
+             QColor color(pen.color());
diff --git a/SOURCES/qtbase-QTBUG-89977.patch b/SOURCES/qtbase-QTBUG-89977.patch
deleted file mode 100644
index cfaac11..0000000
--- a/SOURCES/qtbase-QTBUG-89977.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up qtbase-everywhere-src-5.15.2/src/corelib/text/qbytearray.h.foo qtbase-everywhere-src-5.15.2/src/corelib/text/qbytearray.h
---- qtbase-everywhere-src-5.15.2/src/corelib/text/qbytearray.h.foo	2020-10-27 03:02:11.000000000 -0500
-+++ qtbase-everywhere-src-5.15.2/src/corelib/text/qbytearray.h	2021-02-06 17:05:04.879201352 -0600
-@@ -51,6 +49,7 @@
- 
- #include <string>
- #include <iterator>
-+#include <limits>
- 
- #ifdef truncate
- #error qbytearray.h must be included before any header file that defines truncate
diff --git a/SOURCES/qtbase-QTBUG-90395.patch b/SOURCES/qtbase-QTBUG-90395.patch
deleted file mode 100644
index cc4bb6e..0000000
--- a/SOURCES/qtbase-QTBUG-90395.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -up qtbase-everywhere-src-5.15.2/src/corelib/global/qendian.h.QTBUG-90395 qtbase-everywhere-src-5.15.2/src/corelib/global/qendian.h
---- qtbase-everywhere-src-5.15.2/src/corelib/global/qendian.h.QTBUG-90395	2020-10-27 03:02:11.000000000 -0500
-+++ qtbase-everywhere-src-5.15.2/src/corelib/global/qendian.h	2021-02-06 16:36:27.072105717 -0600
-@@ -44,6 +44,8 @@
- #include <QtCore/qfloat16.h>
- #include <QtCore/qglobal.h>
- 
-+#include <limits>
-+
- // include stdlib.h and hope that it defines __GLIBC__ for glibc-based systems
- #include <stdlib.h>
- #include <string.h>
-diff -up qtbase-everywhere-src-5.15.2/src/corelib/global/qfloat16.h.QTBUG-90395 qtbase-everywhere-src-5.15.2/src/corelib/global/qfloat16.h
---- qtbase-everywhere-src-5.15.2/src/corelib/global/qfloat16.h.QTBUG-90395	2021-02-06 16:36:27.074105730 -0600
-+++ qtbase-everywhere-src-5.15.2/src/corelib/global/qfloat16.h	2021-02-06 16:37:19.212440114 -0600
-@@ -43,6 +43,7 @@
- 
- #include <QtCore/qglobal.h>
- #include <QtCore/qmetatype.h>
-+#include <limits>
- #include <string.h>
- 
- #if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__)
diff --git a/SOURCES/qtbase-everywhere-src-5.15.2-libglvnd.patch b/SOURCES/qtbase-everywhere-src-5.15.2-libglvnd.patch
new file mode 100644
index 0000000..e819f8d
--- /dev/null
+++ b/SOURCES/qtbase-everywhere-src-5.15.2-libglvnd.patch
@@ -0,0 +1,15 @@
+diff -up qtbase-everywhere-src-5.15.2/src/gui/configure.json.libglvnd qtbase-everywhere-src-5.15.2/src/gui/configure.json
+--- qtbase-everywhere-src-5.15.2/src/gui/configure.json.libglvnd	2020-10-27 03:02:11.000000000 -0500
++++ qtbase-everywhere-src-5.15.2/src/gui/configure.json	2021-09-10 10:05:53.610312223 -0500
+@@ -847,9 +847,9 @@
+                 ],
+                 "include": [ "EGL/egl.h", "X11/Xlib.h" ],
+                 "main": [
+-                    "Display *dpy = EGL_DEFAULT_DISPLAY;",
++                    "Display *dpy = reinterpret_cast<Display *>(EGL_DEFAULT_DISPLAY);",
+                     "EGLNativeDisplayType egldpy = XOpenDisplay(\"\");",
+-                    "dpy = egldpy;",
++                    "dpy = reinterpret_cast<Display *>(egldpy);",
+                     "EGLNativeWindowType w = XCreateWindow(dpy, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);",
+                     "XDestroyWindow(dpy, w);",
+                     "XCloseDisplay(dpy);"
diff --git a/SOURCES/qtbase-filechooser-portal-send-window-id-in-hex.patch b/SOURCES/qtbase-filechooser-portal-send-window-id-in-hex.patch
deleted file mode 100644
index 4203036..0000000
--- a/SOURCES/qtbase-filechooser-portal-send-window-id-in-hex.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From acaabc9108dfe75530960cf8e3ec4f3602cd82e0 Mon Sep 17 00:00:00 2001
-From: Jan Grulich <jgrulich@redhat.com>
-Date: Mon, 08 Mar 2021 12:29:21 +0100
-Subject: [PATCH] FileChooser portal: send window id in hex
-
-We send window id in decimal, however, it is expected to be send in hex.
-This causes a mismatch and makes portal dialog to show in background.
-
-Pick-to: 5.15 6.0 6.1
-Change-Id: Ibd77199bbb4a2ad4782a0457ddc5506c6b5608fe
-Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
----
-
-diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
-index ec153f6..85bdd1a 100644
---- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
-+++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
-@@ -185,7 +185,7 @@
-                                                           QLatin1String("/org/freedesktop/portal/desktop"),
-                                                           QLatin1String("org.freedesktop.portal.FileChooser"),
-                                                           d->saveFile ? QLatin1String("SaveFile") : QLatin1String("OpenFile"));
--    QString parentWindowId = QLatin1String("x11:") + QString::number(d->winId);
-+    QString parentWindowId = QLatin1String("x11:") + QString::number(d->winId, 16);
- 
-     QVariantMap options;
-     if (!d->acceptLabel.isEmpty())
diff --git a/SPECS/qt5-qtbase.spec b/SPECS/qt5-qtbase.spec
index 5aebdc6..9521b04 100644
--- a/SPECS/qt5-qtbase.spec
+++ b/SPECS/qt5-qtbase.spec
@@ -57,7 +57,7 @@ BuildRequires: pkgconfig(libsystemd)
 Name:    qt5-qtbase
 Summary: Qt5 - QtBase components
 Version: 5.15.2
-Release: 25%{?dist}
+Release: 27%{?dist}
 
 
 # See LGPL_EXCEPTIONS.txt, for exception details
@@ -114,11 +114,17 @@ Patch54: qtbase-qmake_LFLAGS.patch
 # don't use relocatable heuristics to guess prefix when using -no-feature-relocatable
 Patch55: qtbase-everywhere-src-5.14.2-no_relocatable.patch
 
+# fix FTBFS against libglvnd-1.3.4+
+Patch56: qtbase-everywhere-src-5.15.2-libglvnd.patch
+
 # drop -O3 and make -O2 by default
 Patch61: qt5-qtbase-cxxflag.patch
 
 # support firebird version 3.x
-Patch64: qt5-qtbase-5.12.1-firebird.patch
+Patch63: qt5-qtbase-5.12.1-firebird.patch
+
+# support firebird version 4.x
+Patch64: qt5-qtbase-5.12.1-firebird-4.0.0.patch
 
 # fix for new mariadb
 Patch65: qtbase-opensource-src-5.9.0-mysql.patch
@@ -133,13 +139,14 @@ Patch80: qtbase-use-wayland-on-gnome.patch
 # gcc-11
 Patch90: %{name}-gcc11.patch
 
-# glibc stat
-
 ## upstream patches
-# see also patch90
-Patch200: qtbase-QTBUG-90395.patch
-Patch201: qtbase-QTBUG-89977.patch
-Patch202: qtbase-filechooser-portal-send-window-id-in-hex.patch
+# https://invent.kde.org/qt/qt/qtbase, kde/5.15 branch
+# git diff v5.15.2..HEAD | gzip > kde-5.15-rollup-$(date +%Y%m%d).patch.gz
+# patch100 in lookaside cache due to large'ish size -- rdieter
+Patch100: kde-5.15-rollup-20211012.patch.gz
+Patch101: 0068-Bump-version.patch
+
+Patch102: qtbase-CVE-2021-38593.patch
 
 # Do not check any files in %%{_qt5_plugindir}/platformthemes/ for requires.
 # Those themes are there for platform integration. If the required libraries are
@@ -331,10 +338,10 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
 
 %package mysql
 Summary: MySQL driver for Qt5's SQL classes
-%if 0%{?fedora} > 27 || 0%{?rhel} > 8
-BuildRequires: mariadb-connector-c-devel
-%else
+%if 0%{?rhel} && 0%{?rhel} < 9
 BuildRequires: mysql-devel
+%else
+BuildRequires: mariadb-connector-c-devel
 %endif
 Requires: %{name}%{?_isa} = %{version}-%{release}
 %description mysql
@@ -367,7 +374,7 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
 %package gui
 Summary: Qt5 GUI-related libraries
 Requires: %{name}%{?_isa} = %{version}-%{release}
-%if 0%{?fedora} > 20
+%if ! 0%{?rhel} < 8
 Recommends: mesa-dri-drivers
 %endif
 Obsoletes: qt5-qtbase-x11 < 5.2.0
@@ -394,8 +401,13 @@ Qt5 libraries used for drawing widgets and OpenGL items.
 %patch53 -p1 -b .qt5gui_cmake_isystem_includes
 %patch54 -p1 -b .qmake_LFLAGS
 %patch55 -p1 -b .no_relocatable
+%patch56 -p1 -b .libglvnd
 %patch61 -p1 -b .qt5-qtbase-cxxflag
+%if 0%{?fedora} < 35
+%patch63 -p1 -b .firebird
+%else
 %patch64 -p1 -b .firebird
+%endif
 %if 0%{?fedora} > 27
 %patch65 -p1 -b .mysql
 %endif
@@ -408,8 +420,11 @@ Qt5 libraries used for drawing widgets and OpenGL items.
 %patch90 -p1 -b .gcc11
 
 ## upstream patches
-%patch200 -p1 -b .QTBUG-90395
-%patch201 -p1 -b .QTBUG-89977
+%patch100 -p1
+# revert version bump
+%patch101 -p1 -R
+
+%patch102 -p1
 
 # move some bundled libs to ensure they're not accidentally used
 pushd src/3rdparty
@@ -483,7 +498,7 @@ export MAKEFLAGS="%{?_smp_mflags}"
   -shared \
   -accessibility \
   %{?dbus}%{!?dbus:-dbus-runtime} \
-  %{?egl:-egl} \
+  %{?egl:-egl -eglfs} \
   -fontconfig \
   -glib \
   -gtk \
@@ -519,6 +534,16 @@ export MAKEFLAGS="%{?_smp_mflags}"
   QMAKE_CXXFLAGS_RELEASE="${CXXFLAGS:-$RPM_OPT_FLAGS}" \
   QMAKE_LFLAGS_RELEASE="${LDFLAGS:-$RPM_LD_FLAGS}"
 
+# Validate config results
+for config_test in egl-x11 ; do
+config_result="$(grep ^cache.${config_test}.result config.cache | cut -d= -f2 | tr -d ' ')"
+if [ "${config_result}" != "true" ]; then
+  echo "${config_test} detection failed"
+  config_failed=1
+fi
+done
+if [ ${config_failed} -eq 1 ]; then exit 1; fi
+
 # ensure qmake build using optflags (which can happen if not munging qmake.conf defaults)
 make clean -C qmake
 %make_build -C qmake all binary \
@@ -880,24 +905,24 @@ fi
 %{_qt5_libdir}/cmake/Qt5Widgets/Qt5WidgetsMacros.cmake
 %{_qt5_libdir}/cmake/Qt5Xml/Qt5XmlConfig*.cmake
 %{_qt5_libdir}/cmake/Qt5/Qt5ModuleLocation.cmake
-%{_qt5_libdir}/cmake/Qt5AccessibilitySupport/Qt5AccessibilitySupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5DeviceDiscoverySupport/Qt5DeviceDiscoverySupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5EdidSupport/Qt5EdidSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5EglFSDeviceIntegration/Qt5EglFSDeviceIntegrationConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5EglFsKmsSupport/Qt5EglFsKmsSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5EglSupport/Qt5EglSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5EventDispatcherSupport/Qt5EventDispatcherSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5FbSupport/Qt5FbSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5FontDatabaseSupport/Qt5FontDatabaseSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5GlxSupport/Qt5GlxSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5InputSupport/Qt5InputSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5KmsSupport/Qt5KmsSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5LinuxAccessibilitySupport/Qt5LinuxAccessibilitySupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5PlatformCompositorSupport/Qt5PlatformCompositorSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5ServiceSupport/Qt5ServiceSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5ThemeSupport/Qt5ThemeSupportConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5XcbQpa/Qt5XcbQpaConfig*.cmake
-%{_qt5_libdir}/cmake/Qt5XkbCommonSupport/Qt5XkbCommonSupportConfig*.cmake
+%{_qt5_libdir}/cmake/Qt5AccessibilitySupport/
+%{_qt5_libdir}/cmake/Qt5DeviceDiscoverySupport/
+%{_qt5_libdir}/cmake/Qt5EdidSupport/
+%{_qt5_libdir}/cmake/Qt5EglFSDeviceIntegration/
+%{_qt5_libdir}/cmake/Qt5EglFsKmsSupport/
+%{_qt5_libdir}/cmake/Qt5EglSupport/
+%{_qt5_libdir}/cmake/Qt5EventDispatcherSupport/
+%{_qt5_libdir}/cmake/Qt5FbSupport/
+%{_qt5_libdir}/cmake/Qt5FontDatabaseSupport/
+%{_qt5_libdir}/cmake/Qt5GlxSupport/
+%{_qt5_libdir}/cmake/Qt5InputSupport/
+%{_qt5_libdir}/cmake/Qt5KmsSupport/
+%{_qt5_libdir}/cmake/Qt5LinuxAccessibilitySupport/
+%{_qt5_libdir}/cmake/Qt5PlatformCompositorSupport/
+%{_qt5_libdir}/cmake/Qt5ServiceSupport/
+%{_qt5_libdir}/cmake/Qt5ThemeSupport/
+%{_qt5_libdir}/cmake/Qt5XcbQpa/
+%{_qt5_libdir}/cmake/Qt5XkbCommonSupport/
 %{_qt5_libdir}/metatypes/qt5core_metatypes.json
 %{_qt5_libdir}/metatypes/qt5gui_metatypes.json
 %{_qt5_libdir}/metatypes/qt5widgets_metatypes.json
@@ -1091,6 +1116,21 @@ fi
 
 
 %changelog
+* Mon Oct 18 2021 Jan Grulich <jgrulich@redhat.com> - 5.15.2-27
+- Sync with Fedora:
+  - sync kde/5.15 branch patches
+  - validate configure results (base, egl-x11)
+
+  Resolves: bz#2014991
+
+* Wed Sep 08 2021 Jan Grulich <jgrulich@redhat.com> - 5.15.2-26
+- Sync with Fedora:
+  - sync kde/5.15 branch patches
+  - -gui: add mesa-dri-drivers soft dep for rhel8+ too
+  Resolves: bz#1998959
+- Fix out-of-bound write in QOutlineMapper::converPath
+  Resolves: bz#1996876
+
 * Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 5.15.2-25
 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
   Related: rhbz#1991688