diff --git a/kernel-tools-c99.patch b/kernel-tools-c99.patch
new file mode 100644
index 0000000..6295b27
--- /dev/null
+++ b/kernel-tools-c99.patch
@@ -0,0 +1,121 @@
+From: Florian Weimer <fweimer@redhat.com>
+Subject: [PATCH v4] perf: Avoid implicit function declarations in
+ lexer/parse interface
+To: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org
+Cc:     Peter Zijlstra <peterz@infradead.org>,
+        Ingo Molnar <mingo@redhat.com>,
+        Arnaldo Carvalho de Melo <acme@kernel.org>,
+        Mark Rutland <mark.rutland@arm.com>,
+        Alexander Shishkin <alexander.shishkin@linux.intel.com>,
+        Jiri Olsa <jolsa@kernel.org>,
+        Namhyung Kim <namhyung@kernel.org>,
+        Ian Rogers <irogers@google.com>,
+        Adrian Hunter <adrian.hunter@intel.com>,
+        Ian Rogers <irogers@google.com>,
+        Justin M. Forbes <jforbes@fedoraproject.org>
+Date: Wed, 03 May 2023 20:06:09 +0200 (25 minutes, 29 seconds ago)
+Message-ID: <874jot47e6.fsf@oldenburg.str.redhat.com>
+
+In future compilers, -Wno-implicit-function-declaration may not bring
+back support for implicit function declarations, a feature that was
+removed from the C language in C99.  Instead of relying on implicit
+declarations, include the flex-generated header from the
+bison-generated C code.
+
+The expr-flex.h and pmu-flex.h headers needs to be included very late,
+so that the definition of YYSTYPE is available at that point.
+
+Signed-off-by: Florian Weimer <fweimer@redhat.com>
+
+---
+v4: Rebase on top of perf-next and integrate with bpf-filter.y as well.
+    Even later inclusion of "pmu-flex.h".
+v3: Fix commit message typo.  Try to repost via different mail server.
+v2: Include the flex-generated files instead of manually-written prototypes.
+ tools/perf/util/Build          | 11 ++++++++++-
+ tools/perf/util/bpf-filter.y   |  1 +
+ tools/perf/util/expr.y         |  2 ++
+ tools/perf/util/parse-events.y |  1 +
+ tools/perf/util/pmu.y          |  4 ++++
+ 5 files changed, 18 insertions(+), 1 deletion(-)
+
+diff --git a/tools/perf/util/Build b/tools/perf/util/Build
+index bd18fe5f2719..865ce4f66756 100644
+--- a/tools/perf/util/Build
++++ b/tools/perf/util/Build
+@@ -298,7 +298,7 @@ CFLAGS_bpf-filter-flex.o    += $(flex_flags)
+ bison_flags := -DYYENABLE_NLS=0
+ BISON_GE_35 := $(shell expr $(shell $(BISON) --version | grep bison | sed -e 's/.\+ \([0-9]\+\).\([0-9]\+\)/\1\2/g') \>\= 35)
+ ifeq ($(BISON_GE_35),1)
+-  bison_flags += -Wno-unused-parameter -Wno-nested-externs -Wno-implicit-function-declaration -Wno-switch-enum -Wno-unused-but-set-variable -Wno-unknown-warning-option
++  bison_flags += -Wno-unused-parameter -Wno-nested-externs -Wno-switch-enum -Wno-unused-but-set-variable -Wno-unknown-warning-option
+ else
+   bison_flags += -w
+ endif
+@@ -357,3 +357,12 @@ $(OUTPUT)util/vsprintf.o: ../lib/vsprintf.c FORCE
+ $(OUTPUT)util/list_sort.o: ../lib/list_sort.c FORCE
+ 	$(call rule_mkdir)
+ 	$(call if_changed_dep,cc_o_c)
++
++# These dependencies ensure that the flex-generated .h file is
++# available at the time the bison-generated .c sources are compiled.
++# Do not depend on the generated .h file to prevent triggering
++# parallel flex invocations for the same two output files.
++$(OUTPUT)util/bpf-filter-bison.o : $(OUTPUT)util/bpf-filter-flex.c
++$(OUTPUT)util/expr-bison.o : $(OUTPUT)util/expr-flex.c
++$(OUTPUT)util/parse-events-bison.o : $(OUTPUT)util/parse-events-flex.c
++$(OUTPUT)util/pmu-bison.o : $(OUTPUT)util/pmu-flex.c
+diff --git a/tools/perf/util/bpf-filter.y b/tools/perf/util/bpf-filter.y
+index 07d6c7926c13..935afafe22eb 100644
+--- a/tools/perf/util/bpf-filter.y
++++ b/tools/perf/util/bpf-filter.y
+@@ -8,6 +8,7 @@
+ #include <linux/compiler.h>
+ #include <linux/list.h>
+ #include "bpf-filter.h"
++#include "bpf-filter-flex.h"
+ 
+ static void perf_bpf_filter_error(struct list_head *expr __maybe_unused,
+ 				  char const *msg)
+diff --git a/tools/perf/util/expr.y b/tools/perf/util/expr.y
+index 250e444bf032..8879fa14960f 100644
+--- a/tools/perf/util/expr.y
++++ b/tools/perf/util/expr.y
+@@ -53,6 +53,8 @@
+ %destructor { ids__free($$.ids); } <ids>
+ 
+ %{
++#include "expr-flex.h"
++
+ static void expr_error(double *final_val __maybe_unused,
+ 		       struct expr_parse_ctx *ctx __maybe_unused,
+ 		       bool compute_ids __maybe_unused,
+diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
+index 4488443e506e..401d33714b23 100644
+--- a/tools/perf/util/parse-events.y
++++ b/tools/perf/util/parse-events.y
+@@ -17,6 +17,7 @@
+ #include "evsel.h"
+ #include "parse-events.h"
+ #include "parse-events-bison.h"
++#include "parse-events-flex.h"
+ 
+ void parse_events_error(YYLTYPE *loc, void *parse_state, void *scanner, char const *msg);
+ 
+diff --git a/tools/perf/util/pmu.y b/tools/perf/util/pmu.y
+index dff4e892ac4d..9c67f3d05a80 100644
+--- a/tools/perf/util/pmu.y
++++ b/tools/perf/util/pmu.y
+@@ -32,6 +32,10 @@ do { \
+ 	DECLARE_BITMAP(bits, PERF_PMU_FORMAT_BITS);
+ }
+ 
++%{
++#include "pmu-flex.h"
++%}
++
+ %%
+ 
+ format:
+
+base-commit: 5d27a645f60940fdf589e4ff5351506a7f0fdbaa
diff --git a/kernel-tools.spec b/kernel-tools.spec
index e141d15..83404aa 100644
--- a/kernel-tools.spec
+++ b/kernel-tools.spec
@@ -25,7 +25,7 @@
 # base_sublevel is the kernel version we're starting with and patching
 # on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base,
 # which yields a base_sublevel of 0.
-%global base_sublevel 3
+%global base_sublevel 4
 
 %global base_major 6
 
@@ -33,7 +33,7 @@
 %if 0%{?released_kernel}
 
 # Do we have a -stable update to apply?
-%global stable_update 3
+%global stable_update 4
 # Set rpm version accordingly
 %if 0%{?stable_update}
 %global stablerev %{stable_update}
@@ -57,7 +57,7 @@
 # pkg_release is what we'll fill in for the rpm Release: field
 %if 0%{?released_kernel}
 
-%global pkg_release %{fedora_build}%{?buildid}.3%{?dist}
+%global pkg_release %{fedora_build}%{?buildid}%{?dist}
 
 %else
 
@@ -99,8 +99,6 @@ BuildRequires: perl(Carp)
 BuildRequires: perl(ExtUtils::Embed)
 %endif
 BuildRequires: clang llvm
-# Used to mangle unversioned shebangs to be Python 3
-BuildRequires: /usr/bin/pathfix.py
 %ifnarch s390x %{arm}
 BuildRequires: numactl-devel
 %endif
@@ -137,7 +135,7 @@ Source5000: patch-%{upstream_major}.%{upstream_sublevel}-rc%{rcrev}.xz
 %endif
 %endif
 
-# Patch1: 
+Patch1: kernel-tools-c99.patch
 
 Name: kernel-tools
 Summary: Assortment of tools for the Linux kernel
@@ -255,15 +253,11 @@ cd linux-%{kversion}
     xzcat %{SOURCE5000} | patch -p1 -F1 -s
 %endif
 
-# %patch1 -p1
+%patch1 -p1
 
 # END OF PATCH APPLICATIONS
 
-# Mangle /usr/bin/python shebangs to /usr/bin/python3
-# -p preserves timestamps
-# -n prevents creating ~backup files
-# -i specifies the interpreter for the shebang
-pathfix.py -pni "%{__python3} %{py3_shbang_opts}" tools/ tools/perf/scripts/python/*.py scripts/clang-tools
+%py3_shebang_fix tools/ tools/perf/scripts/python/*.py scripts/clang-tools
 
 ###
 ### build
@@ -635,6 +629,9 @@ popd
 %{_mandir}/man1/rv.1.gz
 
 %changelog
+* Wed Jul 19 2023 Justin M. Forbes <jforbes@fedoraproject.org> - 6.4.4-200
+- Linux v6.4.4
+
 * Fri Jul 07 2023 Michel Alexandre Salim <salimma@centosproject.org> - 6.3.3-200.3
 - Reenable Perl support for hs builds, only disable on hs+fb
 
diff --git a/sources b/sources
index 6f6543b..f9c3773 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (linux-6.3.tar.xz) = 768979440f4907ba64d4481b383d6101faf208f27a0b897156123aa278c5743fe3c4f61945b2541429c532d45382aaee8899ea9d44a1d2895bfbb79bfd937f65
-SHA512 (patch-6.3.3.xz) = 0f5aeb2a0adb99faec961d93d421f67582f23459d2591c07a0152c042d8c87a2d2061ea4dc6a6be8a25da07b70a6bc2f83479f36cb14636c8dbf6b9fb9827e31
+SHA512 (linux-6.4.tar.xz) = 11a48b25e0b513782d3b89101c2ec8dd9cefd6ce08dc63a91137903b66392aa72ca1fe32816710673af84dd47de3ab8738056a6af93dc0d5e60ef4b869b49928
+SHA512 (patch-6.4.4.xz) = ff17b28aca777e4468aef9d278871f921a6d9c6d2ccbf1efbc85acc5bb002e3450cd1de7c50fa49c99531cfd8a29b5a504c2db22db05b956cfe7c085ba2e46aa