diff --git a/valgrind-3.18.1-s390x-wflrx.patch b/valgrind-3.18.1-s390x-wflrx.patch
new file mode 100644
index 0000000..6639756
--- /dev/null
+++ b/valgrind-3.18.1-s390x-wflrx.patch
@@ -0,0 +1,33 @@
+From da3b331c63a6aec0ec3206b1d9ca0df9bced3338 Mon Sep 17 00:00:00 2001
+From: Andreas Arnez <arnez@linux.ibm.com>
+Date: Mon, 3 Jan 2022 18:15:05 +0100
+Subject: [PATCH] s390: Fix VFLRX and WFLRX instructions
+
+Due to a typo in s390_irgen_VFLR, the VFLR instruction behaves incorrectly
+when its m3 field contains 4, meaning extended format.  In that case VFLR
+is also written as VFLRX (or WFLRX) and supposed to round down from the
+extended 128-bit format to the long 64-bit format.  However, the typo
+checks for m3 == 2 instead, so the value of 4 is unhandled, causing
+Valgrind to throw a specification exception.
+
+This fixes the typo.
+---
+ VEX/priv/guest_s390_toIR.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c
+index fffc563d4..3ef104fcd 100644
+--- a/VEX/priv/guest_s390_toIR.c
++++ b/VEX/priv/guest_s390_toIR.c
+@@ -19008,7 +19008,7 @@ s390_irgen_VFLL(UChar v1, UChar v2, UChar m3, UChar m4, UChar m5)
+ static const HChar *
+ s390_irgen_VFLR(UChar v1, UChar v2, UChar m3, UChar m4, UChar m5)
+ {
+-   s390_insn_assert("vflr", m3 == 3 || (s390_host_has_vxe && m3 == 2));
++   s390_insn_assert("vflr", m3 == 3 || (s390_host_has_vxe && m3 == 4));
+ 
+    if (m3 == 3)
+       s390_vector_fp_convert(Iop_F64toF32, Ity_F64, Ity_F32, True,
+-- 
+2.31.1
+
diff --git a/valgrind.spec b/valgrind.spec
index d08ec17..1a6fba2 100644
--- a/valgrind.spec
+++ b/valgrind.spec
@@ -137,6 +137,9 @@ Patch20: valgrind-3.18.1-s390x-vdso.patch
 # KDE#447995 Valgrind segfault on power10 due to hwcap checking code
 Patch21: valgrind-3.18.1-ppc-hwcaps.patch
 
+# KDE#447991 s390x: Valgrind indicates illegal instruction on wflrx
+Patch22: valgrind-3.18.1-s390x-wflrx.patch
+
 BuildRequires: make
 BuildRequires: glibc-devel
 
@@ -290,6 +293,7 @@ Valgrind User Manual for details.
 %patch19 -p1
 %patch20 -p1
 %patch21 -p1
+%patch22 -p1
 
 %build
 # LTO triggers undefined symbols in valgrind.  Valgrind has a --enable-lto
@@ -521,6 +525,7 @@ fi
 %changelog
 * Wed Jan 12 2022 Mark Wielaard <mjw@fedoraproject.org>
 - Add valgrind-3.18.1-ppc-hwcaps.patch
+- Add valgrind-3.18.1-s390x-wflrx.patch
 
 * Sat Dec 11 2021 Mark Wielaard <mjw@fedoraproject.org> - 3.18.1-7
 -Add valgrind-3.18.1-s390x-vdso.patch