From 8d9de5532924adbb5b88c2d8d716824011680612 Mon Sep 17 00:00:00 2001 From: "Justin M. Forbes" Date: Fri, 11 Jul 2025 17:38:46 -0600 Subject: [PATCH] kernel-6.16.0-0.rc4.38 * Mon Jun 30 2025 Fedora Kernel Team [6.16.0-0.rc4.38] - redhat/configs: clang_lto: disable CONFIG_FORTIFY_KUNIT_TEST (Scott Weaver) Resolves: Signed-off-by: Justin M. Forbes --- Makefile.rhelver | 2 +- Patchlist.changelog | 3 - kernel.changelog | 57 +------- kernel.spec | 94 ++++---------- patch-6.16-redhat.patch | 282 ++-------------------------------------- sources | 4 +- 6 files changed, 40 insertions(+), 402 deletions(-) diff --git a/Makefile.rhelver b/Makefile.rhelver index fc29282ea..40f70faf5 100644 --- a/Makefile.rhelver +++ b/Makefile.rhelver @@ -12,7 +12,7 @@ RHEL_MINOR = 99 # # Use this spot to avoid future merge conflicts. # Do not trim this comment. -RHEL_RELEASE = 49 +RHEL_RELEASE = 38 # # RHEL_REBASE_NUM diff --git a/Patchlist.changelog b/Patchlist.changelog index 8e88c74e1..0a7726521 100644 --- a/Patchlist.changelog +++ b/Patchlist.changelog @@ -1,6 +1,3 @@ -https://gitlab.com/cki-project/kernel-ark/-/commit/4b7f8251dd4c5206c4af97072ceb007ae841fff4 - 4b7f8251dd4c5206c4af97072ceb007ae841fff4 drm/framebuffer: Acquire internal references on GEM handles - https://gitlab.com/cki-project/kernel-ark/-/commit/8fa39ad0e51091a6e5236725ec959abb7177772f 8fa39ad0e51091a6e5236725ec959abb7177772f Simplify include Makefile.rhelver diff --git a/kernel.changelog b/kernel.changelog index b70b4309e..c6d725c1f 100644 --- a/kernel.changelog +++ b/kernel.changelog @@ -1,62 +1,7 @@ -* Fri Jul 11 2025 Fedora Kernel Team [6.16.0-0.rc5.bc9ff192a6c9.49] +* Mon Jun 30 2025 Fedora Kernel Team [6.16.0-0.rc4.38] - redhat/configs: clang_lto: disable CONFIG_FORTIFY_KUNIT_TEST (Scott Weaver) Resolves: -* Fri Jul 11 2025 Fedora Kernel Team [6.16.0-0.rc5.bc9ff192a6c9.48] -- kernel.spec: honor packaging flags (Scott Weaver) -- Fix FIPS mode for Fedora (Justin M. Forbes) -- Linux v6.16.0-0.rc5.bc9ff192a6c9 -Resolves: - -* Thu Jul 10 2025 Fedora Kernel Team [6.16.0-0.rc5.8c2e52ebbe88.47] -- Linux v6.16.0-0.rc5.8c2e52ebbe88 -Resolves: - -* Wed Jul 09 2025 Fedora Kernel Team [6.16.0-0.rc5.733923397fd9.46] -- Linux v6.16.0-0.rc5.733923397fd9 -Resolves: - -* Tue Jul 08 2025 Fedora Kernel Team [6.16.0-0.rc5.d006330be3f7.45] -- Turn on TSA Mitigation for Fedora (Justin M. Forbes) -- Linux v6.16.0-0.rc5.d006330be3f7 -Resolves: - -* Mon Jul 07 2025 Fedora Kernel Team [6.16.0-0.rc5.44] -- Linux v6.16.0-0.rc5 -Resolves: - -* Sun Jul 06 2025 Fedora Kernel Team [6.16.0-0.rc4.1f988d0788f5.43] -- Linux v6.16.0-0.rc4.1f988d0788f5 -Resolves: - -* Sat Jul 05 2025 Fedora Kernel Team [6.16.0-0.rc4.a79a588fc176.42] -- Linux v6.16.0-0.rc4.a79a588fc176 -Resolves: - -* Fri Jul 04 2025 Fedora Kernel Team [6.16.0-0.rc4.4c06e63b9203.41] -- redhat/configs: Enable CONFIG_AMD_HSMP_ACPI and CONFIG_AMD_HSMP_PLAT on RHEL (David Arcari) -- Linux v6.16.0-0.rc4.4c06e63b9203 -Resolves: - -* Thu Jul 03 2025 Fedora Kernel Team [6.16.0-0.rc4.b4911fb0b060.40] -- redhat/configs: CONFIG_WWAN enough as a module (Jose Ignacio Tornos Martinez) -- redhat/configs: Enable CONFIG_NET_SCH_BPF on RHEL (Viktor Malik) -- config: new config in drivers/phy (Izabela Bakollari) -- Linux v6.16.0-0.rc4.b4911fb0b060 -Resolves: - -* Wed Jul 02 2025 Fedora Kernel Team [6.16.0-0.rc4.66701750d556.39] -- livepatch: no need to build kselftests with kernel (Radomir Vrbovsky) -- redhat: Restore the status quo wrt memory onlining (Vitaly Kuznetsov) [2375049] -- redhat/spec: Disable gdb index for riscv cross-compile (Jennifer Berringer) -- gitlab-ci: Enable CI for riscv64 on centos/eln (Jennifer Berringer) -- redhat: Enable RISC-V arch for centos/eln (Jennifer Berringer) -Resolves: rhbz#2375049 - -* Tue Jul 01 2025 Fedora Kernel Team [6.16.0-0.rc4.66701750d556.38] -- Linux v6.16.0-0.rc4.66701750d556 -Resolves: - * Mon Jun 30 2025 Fedora Kernel Team [6.16.0-0.rc4.37] - Linux v6.16.0-0.rc4 Resolves: diff --git a/kernel.spec b/kernel.spec index add790b27..5e4ee42c9 100644 --- a/kernel.spec +++ b/kernel.spec @@ -162,13 +162,13 @@ Summary: The Linux kernel %define specrpmversion 6.16.0 %define specversion 6.16.0 %define patchversion 6.16 -%define pkgrelease 0.rc5.250711gbc9ff192a6c9.49 +%define pkgrelease 0.rc4.50 %define kversion 6 -%define tarfile_release 6.16-rc5-121-gbc9ff192a6c9 +%define tarfile_release 6.16-rc4 # This is needed to do merge window version magic %define patchlevel 16 # This allows pkg_release to have configurable %%{?dist} tag -%define specrelease 0.rc5.250711gbc9ff192a6c9.49%{?buildid}%{?dist} +%define specrelease 0.rc4.50%{?buildid}%{?dist} # This defines the kabi tarball version %define kabiversion 6.16.0 @@ -644,6 +644,9 @@ Summary: The Linux kernel %define cpupowerarchs i686 x86_64 ppc64le aarch64 riscv64 %endif +# Architectures we build kernel livepatching selftests on +%define klptestarches x86_64 ppc64le s390x + %if 0%{?use_vdso} %define _use_vdso 1 %else @@ -711,7 +714,7 @@ Release: %{pkg_release} %if 0%{?fedora} ExclusiveArch: noarch x86_64 s390x aarch64 ppc64le riscv64 %else -ExclusiveArch: noarch i386 i686 x86_64 s390x aarch64 ppc64le riscv64 +ExclusiveArch: noarch i386 i686 x86_64 s390x aarch64 ppc64le %endif ExclusiveOS: Linux %ifnarch %{nobuildarches} @@ -854,16 +857,6 @@ BuildRequires: binutils-%{_build_arch}-linux-gnu, gcc-%{_build_arch}-linux-gnu # debugedit-5.1-5 in F42 added support to override tools with target versions. %undefine _include_gdb_index %endif - -%if 0%{?rhel}%{?centos} -%ifarch riscv64 -# Temporary workaround to avoid using find-debuginfo and gdb.minimal. -# The current c10s version of gdb-minimal (14.2-4.el10) crashes when given some -# riscv64 kernel modules (see RHEL-91586). Not building the gdb index avoids -# breaking CI for now. -%undefine _include_gdb_index -%endif -%endif %endif # These below are required to build man pages @@ -980,9 +973,6 @@ Source33: %{name}-x86_64-debug-rhel.config # ARM64 64K page-size kernel config Source42: %{name}-aarch64-64k-rhel.config Source43: %{name}-aarch64-64k-debug-rhel.config - -Source44: %{name}-riscv64-rhel.config -Source45: %{name}-riscv64-debug-rhel.config %endif %if %{include_rhel} || %{include_automotive} @@ -1179,7 +1169,7 @@ device drivers shipped with it are documented in these files. You'll want to install this package if you need a reference to the options that can be passed to Linux kernel modules at load time. -%if %{with_headers} + %package headers Summary: Header files for the Linux kernel for use by glibc Obsoletes: glibc-kernheaders < 3.0-46 @@ -1194,9 +1184,7 @@ between the Linux kernel and userspace libraries and programs. The header files define structures and constants that are needed for building most standard programs and are also needed for rebuilding the glibc package. -%endif -%if %{with_cross_headers} %package cross-headers Summary: Header files for the Linux kernel for use by cross-glibc %if 0%{?gemini} @@ -1209,7 +1197,6 @@ between the Linux kernel and userspace libraries and programs. The header files define structures and constants that are needed for building most standard programs and are also needed for rebuilding the cross-glibc package. -%endif %package debuginfo-common-%{_target_cpu} Summary: Kernel source files used by %{name}-debuginfo packages @@ -1406,7 +1393,6 @@ Summary: gcov graph and source files for coverage data collection.\ %{?1:%{1}-}gcov includes the gcov graph and source files for gcov coverage collection.\ %{nil} -%if %{with_kernel_abi_stablelists} %package -n %{package_name}-abi-stablelists Summary: The Red Hat Enterprise Linux kernel ABI symbol stablelists AutoReqProv: no @@ -1414,7 +1400,6 @@ AutoReqProv: no The kABI package contains information pertaining to the Red Hat Enterprise Linux kernel ABI, including lists of kernel symbols that are needed by external Linux kernel modules, and a yum plugin to aid enforcement. -%endif %if %{with_kabidw_base} %package kernel-kabidw-base-internal @@ -2308,7 +2293,6 @@ BuildKernel() { %ifarch aarch64 riscv64 %{log_msg "Build dtb kernel"} - mkdir -p $RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer %{make} ARCH=$Arch dtbs INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer %{make} ARCH=$Arch dtbs_install INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer cp -r $RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer $RPM_BUILD_ROOT/lib/modules/$KernelVer/dtb @@ -3272,6 +3256,13 @@ pushd tools/testing/selftests %{log_msg "main selftests compile"} %{make} %{?_smp_mflags} ARCH=$Arch V=1 TARGETS="bpf cgroup kmod mm net net/forwarding net/mptcp net/netfilter net/packetdrill tc-testing memfd drivers/net drivers/net/hw iommu cachestat pid_namespace rlimits timens pidfd" SKIP_TARGETS="" $force_targets INSTALL_PATH=%{buildroot}%{_libexecdir}/kselftests VMLINUX_H="${RPM_VMLINUX_H}" install +%ifarch %{klptestarches} + # kernel livepatching selftest test_modules will build against + # /lib/modules/$(shell uname -r)/build tree unless KDIR is set + export KDIR=$(realpath $(pwd)/../../..) + %{make} %{?_smp_mflags} ARCH=$Arch V=1 TARGETS="livepatch" SKIP_TARGETS="" $force_targets INSTALL_PATH=%{buildroot}%{_libexecdir}/kselftests VMLINUX_H="${RPM_VMLINUX_H}" install || true +%endif + # 'make install' for bpf is broken and upstream refuses to fix it. # Install the needed files manually. %{log_msg "install selftests"} @@ -3634,6 +3625,12 @@ find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/tc-testing/{ find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/tc-testing/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/tc-testing/{} \; popd +# install livepatch selftests +pushd tools/testing/selftests/livepatch +find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/livepatch/{} \; +find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/livepatch/{} \; +find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/livepatch/{} \; +popd # install net/netfilter selftests pushd tools/testing/selftests/net/netfilter find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/net/netfilter/{} \; @@ -4352,56 +4349,9 @@ fi\ # # %changelog -* Fri Jul 11 2025 Justin M. Forbes [6.16.0-0.rc5.250711gbc9ff192a6c9.49] -- drm/framebuffer: Acquire internal references on GEM handles (Thomas Zimmermann) - -* Fri Jul 11 2025 Fedora Kernel Team [6.16.0-0.rc5.bc9ff192a6c9.49] +* Mon Jun 30 2025 Fedora Kernel Team [6.16.0-0.rc4.50] - redhat/configs: clang_lto: disable CONFIG_FORTIFY_KUNIT_TEST (Scott Weaver) -* Fri Jul 11 2025 Fedora Kernel Team [6.16.0-0.rc5.bc9ff192a6c9.48] -- kernel.spec: honor packaging flags (Scott Weaver) -- Fix FIPS mode for Fedora (Justin M. Forbes) -- Linux v6.16.0-0.rc5.bc9ff192a6c9 - -* Thu Jul 10 2025 Fedora Kernel Team [6.16.0-0.rc5.8c2e52ebbe88.47] -- Linux v6.16.0-0.rc5.8c2e52ebbe88 - -* Wed Jul 09 2025 Fedora Kernel Team [6.16.0-0.rc5.733923397fd9.46] -- Linux v6.16.0-0.rc5.733923397fd9 - -* Tue Jul 08 2025 Fedora Kernel Team [6.16.0-0.rc5.d006330be3f7.45] -- Turn on TSA Mitigation for Fedora (Justin M. Forbes) -- Linux v6.16.0-0.rc5.d006330be3f7 - -* Mon Jul 07 2025 Fedora Kernel Team [6.16.0-0.rc5.44] -- Linux v6.16.0-0.rc5 - -* Sun Jul 06 2025 Fedora Kernel Team [6.16.0-0.rc4.1f988d0788f5.43] -- Linux v6.16.0-0.rc4.1f988d0788f5 - -* Sat Jul 05 2025 Fedora Kernel Team [6.16.0-0.rc4.a79a588fc176.42] -- Linux v6.16.0-0.rc4.a79a588fc176 - -* Fri Jul 04 2025 Fedora Kernel Team [6.16.0-0.rc4.4c06e63b9203.41] -- redhat/configs: Enable CONFIG_AMD_HSMP_ACPI and CONFIG_AMD_HSMP_PLAT on RHEL (David Arcari) -- Linux v6.16.0-0.rc4.4c06e63b9203 - -* Thu Jul 03 2025 Fedora Kernel Team [6.16.0-0.rc4.b4911fb0b060.40] -- redhat/configs: CONFIG_WWAN enough as a module (Jose Ignacio Tornos Martinez) -- redhat/configs: Enable CONFIG_NET_SCH_BPF on RHEL (Viktor Malik) -- config: new config in drivers/phy (Izabela Bakollari) -- Linux v6.16.0-0.rc4.b4911fb0b060 - -* Wed Jul 02 2025 Fedora Kernel Team [6.16.0-0.rc4.66701750d556.39] -- livepatch: no need to build kselftests with kernel (Radomir Vrbovsky) -- redhat: Restore the status quo wrt memory onlining (Vitaly Kuznetsov) [2375049] -- redhat/spec: Disable gdb index for riscv cross-compile (Jennifer Berringer) -- gitlab-ci: Enable CI for riscv64 on centos/eln (Jennifer Berringer) -- redhat: Enable RISC-V arch for centos/eln (Jennifer Berringer) - -* Tue Jul 01 2025 Fedora Kernel Team [6.16.0-0.rc4.66701750d556.38] -- Linux v6.16.0-0.rc4.66701750d556 - * Mon Jun 30 2025 Fedora Kernel Team [6.16.0-0.rc4.37] - Linux v6.16.0-0.rc4 diff --git a/patch-6.16-redhat.patch b/patch-6.16-redhat.patch index befaa06e4..8a92b6959 100644 --- a/patch-6.16-redhat.patch +++ b/patch-6.16-redhat.patch @@ -27,10 +27,6 @@ drivers/firmware/efi/Makefile | 1 + drivers/firmware/efi/efi.c | 124 +++-- drivers/firmware/efi/secureboot.c | 38 ++ - drivers/gpu/drm/drm_framebuffer.c | 31 +- - drivers/gpu/drm/drm_gem.c | 38 +- - drivers/gpu/drm/drm_gem_framebuffer_helper.c | 16 +- - drivers/gpu/drm/drm_internal.h | 2 +- drivers/hid/hid-rmi.c | 66 --- drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 + drivers/input/rmi4/rmi_driver.c | 124 +++-- @@ -49,7 +45,6 @@ fs/afs/main.c | 3 + fs/erofs/super.c | 9 + fs/ext4/super.c | 11 + - include/drm/drm_framebuffer.h | 7 + include/linux/crypto.h | 3 + include/linux/efi.h | 22 +- include/linux/kernel.h | 16 + @@ -80,10 +75,10 @@ security/integrity/platform_certs/load_uefi.c | 6 +- security/lockdown/Kconfig | 13 + security/lockdown/lockdown.c | 11 + - 82 files changed, 2788 insertions(+), 233 deletions(-) + 77 files changed, 2720 insertions(+), 207 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index 07e22ba5bfe3..f9d712044457 100644 +index f1f2c0874da9..bcbfd150b8a1 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -6301,6 +6301,17 @@ @@ -104,7 +99,7 @@ index 07e22ba5bfe3..f9d712044457 100644 ring3mwait=disable [KNL] Disable ring 3 MONITOR/MWAIT feature on supported CPUs. -@@ -7647,6 +7658,15 @@ +@@ -7634,6 +7645,15 @@ unknown_nmi_panic [X86] Cause panic on unknown NMI. @@ -195,7 +190,7 @@ index 000000000000..85771d74c34f + +endmenu diff --git a/Makefile b/Makefile -index 7eea2a41c905..64635af4a041 100644 +index 1c9ea229809f..4b83d7676140 100644 --- a/Makefile +++ b/Makefile @@ -355,6 +355,17 @@ ifneq ($(filter install,$(MAKECMDGOALS)),) @@ -281,10 +276,10 @@ index 3072731fe09c..d34abca3e149 100644 The VM uses one page of physical memory for each page table. For systems with a lot of processes, this can use a lot of diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index 393d71124f5d..ea142284db99 100644 +index 55fc331af337..f5d5e59058a2 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -1428,7 +1428,7 @@ endchoice +@@ -1427,7 +1427,7 @@ endchoice config ARM64_FORCE_52BIT bool "Force 52-bit virtual addresses for userspace" @@ -341,10 +336,10 @@ index f244c5560e7f..464f915011b8 100644 /* boot_command_line has been already set up in early.c */ *cmdline_p = boot_command_line; diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c -index fb50c1dd53ef..c68958773d34 100644 +index 27125e009847..40e5c9b1e707 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c -@@ -1732,6 +1732,7 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) +@@ -1720,6 +1720,7 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) get_cpu_vendor(c); intel_unlock_cpuid_leafs(c); get_cpu_cap(c); @@ -1501,223 +1496,6 @@ index 000000000000..de0a3714a5d4 + } + } +} -diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c -index b781601946db..63a70f285cce 100644 ---- a/drivers/gpu/drm/drm_framebuffer.c -+++ b/drivers/gpu/drm/drm_framebuffer.c -@@ -862,11 +862,23 @@ EXPORT_SYMBOL_FOR_TESTS_ONLY(drm_framebuffer_free); - int drm_framebuffer_init(struct drm_device *dev, struct drm_framebuffer *fb, - const struct drm_framebuffer_funcs *funcs) - { -+ unsigned int i; - int ret; -+ bool exists; - - if (WARN_ON_ONCE(fb->dev != dev || !fb->format)) - return -EINVAL; - -+ for (i = 0; i < fb->format->num_planes; i++) { -+ if (drm_WARN_ON_ONCE(dev, fb->internal_flags & DRM_FRAMEBUFFER_HAS_HANDLE_REF(i))) -+ fb->internal_flags &= ~DRM_FRAMEBUFFER_HAS_HANDLE_REF(i); -+ if (fb->obj[i]) { -+ exists = drm_gem_object_handle_get_if_exists_unlocked(fb->obj[i]); -+ if (exists) -+ fb->internal_flags |= DRM_FRAMEBUFFER_HAS_HANDLE_REF(i); -+ } -+ } -+ - INIT_LIST_HEAD(&fb->filp_head); - - fb->funcs = funcs; -@@ -875,7 +887,7 @@ int drm_framebuffer_init(struct drm_device *dev, struct drm_framebuffer *fb, - ret = __drm_mode_object_add(dev, &fb->base, DRM_MODE_OBJECT_FB, - false, drm_framebuffer_free); - if (ret) -- goto out; -+ goto err; - - mutex_lock(&dev->mode_config.fb_lock); - dev->mode_config.num_fb++; -@@ -883,7 +895,16 @@ int drm_framebuffer_init(struct drm_device *dev, struct drm_framebuffer *fb, - mutex_unlock(&dev->mode_config.fb_lock); - - drm_mode_object_register(dev, &fb->base); --out: -+ -+ return 0; -+ -+err: -+ for (i = 0; i < fb->format->num_planes; i++) { -+ if (fb->internal_flags & DRM_FRAMEBUFFER_HAS_HANDLE_REF(i)) { -+ drm_gem_object_handle_put_unlocked(fb->obj[i]); -+ fb->internal_flags &= ~DRM_FRAMEBUFFER_HAS_HANDLE_REF(i); -+ } -+ } - return ret; - } - EXPORT_SYMBOL(drm_framebuffer_init); -@@ -960,6 +981,12 @@ EXPORT_SYMBOL(drm_framebuffer_unregister_private); - void drm_framebuffer_cleanup(struct drm_framebuffer *fb) - { - struct drm_device *dev = fb->dev; -+ unsigned int i; -+ -+ for (i = 0; i < fb->format->num_planes; i++) { -+ if (fb->internal_flags & DRM_FRAMEBUFFER_HAS_HANDLE_REF(i)) -+ drm_gem_object_handle_put_unlocked(fb->obj[i]); -+ } - - mutex_lock(&dev->mode_config.fb_lock); - list_del(&fb->head); -diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c -index 4bf0a76bb35e..aad6ac9748cc 100644 ---- a/drivers/gpu/drm/drm_gem.c -+++ b/drivers/gpu/drm/drm_gem.c -@@ -223,23 +223,34 @@ static void drm_gem_object_handle_get(struct drm_gem_object *obj) - } - - /** -- * drm_gem_object_handle_get_unlocked - acquire reference on user-space handles -+ * drm_gem_object_handle_get_if_exists_unlocked - acquire reference on user-space handle, if any - * @obj: GEM object - * -- * Acquires a reference on the GEM buffer object's handle. Required -- * to keep the GEM object alive. Call drm_gem_object_handle_put_unlocked() -- * to release the reference. -+ * Acquires a reference on the GEM buffer object's handle. Required to keep -+ * the GEM object alive. Call drm_gem_object_handle_put_if_exists_unlocked() -+ * to release the reference. Does nothing if the buffer object has no handle. -+ * -+ * Returns: -+ * True if a handle exists, or false otherwise - */ --void drm_gem_object_handle_get_unlocked(struct drm_gem_object *obj) -+bool drm_gem_object_handle_get_if_exists_unlocked(struct drm_gem_object *obj) - { - struct drm_device *dev = obj->dev; - - guard(mutex)(&dev->object_name_lock); - -- drm_WARN_ON(dev, !obj->handle_count); /* first ref taken in create-tail helper */ -+ /* -+ * First ref taken during GEM object creation, if any. Some -+ * drivers set up internal framebuffers with GEM objects that -+ * do not have a GEM handle. Hence, this counter can be zero. -+ */ -+ if (!obj->handle_count) -+ return false; -+ - drm_gem_object_handle_get(obj); -+ -+ return true; - } --EXPORT_SYMBOL(drm_gem_object_handle_get_unlocked); - - /** - * drm_gem_object_handle_free - release resources bound to userspace handles -@@ -272,7 +283,7 @@ static void drm_gem_object_exported_dma_buf_free(struct drm_gem_object *obj) - } - - /** -- * drm_gem_object_handle_put_unlocked - releases reference on user-space handles -+ * drm_gem_object_handle_put_unlocked - releases reference on user-space handle - * @obj: GEM object - * - * Releases a reference on the GEM buffer object's handle. Possibly releases -@@ -283,14 +294,14 @@ void drm_gem_object_handle_put_unlocked(struct drm_gem_object *obj) - struct drm_device *dev = obj->dev; - bool final = false; - -- if (WARN_ON(READ_ONCE(obj->handle_count) == 0)) -+ if (drm_WARN_ON(dev, READ_ONCE(obj->handle_count) == 0)) - return; - - /* -- * Must bump handle count first as this may be the last -- * ref, in which case the object would disappear before we -- * checked for a name -- */ -+ * Must bump handle count first as this may be the last -+ * ref, in which case the object would disappear before -+ * we checked for a name. -+ */ - - mutex_lock(&dev->object_name_lock); - if (--obj->handle_count == 0) { -@@ -303,7 +314,6 @@ void drm_gem_object_handle_put_unlocked(struct drm_gem_object *obj) - if (final) - drm_gem_object_put(obj); - } --EXPORT_SYMBOL(drm_gem_object_handle_put_unlocked); - - /* - * Called at device or object close to release the file's -diff --git a/drivers/gpu/drm/drm_gem_framebuffer_helper.c b/drivers/gpu/drm/drm_gem_framebuffer_helper.c -index 14a87788695d..6f72e7a0f427 100644 ---- a/drivers/gpu/drm/drm_gem_framebuffer_helper.c -+++ b/drivers/gpu/drm/drm_gem_framebuffer_helper.c -@@ -99,7 +99,7 @@ void drm_gem_fb_destroy(struct drm_framebuffer *fb) - unsigned int i; - - for (i = 0; i < fb->format->num_planes; i++) -- drm_gem_object_handle_put_unlocked(fb->obj[i]); -+ drm_gem_object_put(fb->obj[i]); - - drm_framebuffer_cleanup(fb); - kfree(fb); -@@ -182,10 +182,8 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev, - if (!objs[i]) { - drm_dbg_kms(dev, "Failed to lookup GEM object\n"); - ret = -ENOENT; -- goto err_gem_object_handle_put_unlocked; -+ goto err_gem_object_put; - } -- drm_gem_object_handle_get_unlocked(objs[i]); -- drm_gem_object_put(objs[i]); - - min_size = (height - 1) * mode_cmd->pitches[i] - + drm_format_info_min_pitch(info, i, width) -@@ -195,22 +193,22 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev, - drm_dbg_kms(dev, - "GEM object size (%zu) smaller than minimum size (%u) for plane %d\n", - objs[i]->size, min_size, i); -- drm_gem_object_handle_put_unlocked(objs[i]); -+ drm_gem_object_put(objs[i]); - ret = -EINVAL; -- goto err_gem_object_handle_put_unlocked; -+ goto err_gem_object_put; - } - } - - ret = drm_gem_fb_init(dev, fb, mode_cmd, objs, i, funcs); - if (ret) -- goto err_gem_object_handle_put_unlocked; -+ goto err_gem_object_put; - - return 0; - --err_gem_object_handle_put_unlocked: -+err_gem_object_put: - while (i > 0) { - --i; -- drm_gem_object_handle_put_unlocked(objs[i]); -+ drm_gem_object_put(objs[i]); - } - return ret; - } -diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h -index be77d61a16ce..60c282881958 100644 ---- a/drivers/gpu/drm/drm_internal.h -+++ b/drivers/gpu/drm/drm_internal.h -@@ -161,7 +161,7 @@ void drm_sysfs_lease_event(struct drm_device *dev); - - /* drm_gem.c */ - int drm_gem_init(struct drm_device *dev); --void drm_gem_object_handle_get_unlocked(struct drm_gem_object *obj); -+bool drm_gem_object_handle_get_if_exists_unlocked(struct drm_gem_object *obj); - void drm_gem_object_handle_put_unlocked(struct drm_gem_object *obj); - int drm_gem_handle_create_tail(struct drm_file *file_priv, - struct drm_gem_object *obj, diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c index d4af17fdba46..154f0403cbf4 100644 --- a/drivers/hid/hid-rmi.c @@ -2388,7 +2166,7 @@ index d4b484c0fd9d..4e5bb4cce484 100644 { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2271) }, { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2261) }, diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c -index eeaa6af294b8..150578ffc41a 100644 +index 3f6e87705b62..ddfd99a32f14 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -121,6 +121,14 @@ static const char *sd_cache_types[] = { @@ -2419,10 +2197,10 @@ index eeaa6af294b8..150578ffc41a 100644 if (err) goto err_out_driver; diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index 3e1215f7a9a0..0920136b0c21 100644 +index 770d1e91183c..46ccd737c4ee 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -5889,6 +5889,13 @@ static void hub_event(struct work_struct *work) +@@ -5858,6 +5858,13 @@ static void hub_event(struct work_struct *work) (u16) hub->change_bits[0], (u16) hub->event_bits[0]); @@ -2499,38 +2277,6 @@ index c7d39da7e733..bc9d490ca73e 100644 /* Register sysfs after all initializations are complete. */ err = ext4_register_sysfs(sb); if (err) -diff --git a/include/drm/drm_framebuffer.h b/include/drm/drm_framebuffer.h -index 668077009fce..38b24fc8978d 100644 ---- a/include/drm/drm_framebuffer.h -+++ b/include/drm/drm_framebuffer.h -@@ -23,6 +23,7 @@ - #ifndef __DRM_FRAMEBUFFER_H__ - #define __DRM_FRAMEBUFFER_H__ - -+#include - #include - #include - #include -@@ -100,6 +101,8 @@ struct drm_framebuffer_funcs { - unsigned num_clips); - }; - -+#define DRM_FRAMEBUFFER_HAS_HANDLE_REF(_i) BIT(0u + (_i)) -+ - /** - * struct drm_framebuffer - frame buffer object - * -@@ -188,6 +191,10 @@ struct drm_framebuffer { - * DRM_MODE_FB_MODIFIERS. - */ - int flags; -+ /** -+ * @internal_flags: Framebuffer flags like DRM_FRAMEBUFFER_HAS_HANDLE_REF. -+ */ -+ unsigned int internal_flags; - /** - * @filp_head: Placed on &drm_file.fbs, protected by &drm_file.fbs_lock. - */ diff --git a/include/linux/crypto.h b/include/linux/crypto.h index b50f1954d1bb..604cea40eb9c 100644 --- a/include/linux/crypto.h @@ -3495,7 +3241,7 @@ index dd5304c6ac3c..b38a64ce7b19 100644 } diff --git a/kernel/module/main.c b/kernel/module/main.c -index c2c08007029d..a9d9c03ffd6d 100644 +index 413ac6ea3702..5bc4453090ce 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -65,6 +65,8 @@ @@ -3523,7 +3269,7 @@ index c2c08007029d..a9d9c03ffd6d 100644 &modinfo_initstate, &modinfo_coresize, #ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC -@@ -3304,6 +3308,11 @@ static int early_mod_check(struct load_info *info, int flags) +@@ -3299,6 +3303,11 @@ static int early_mod_check(struct load_info *info, int flags) return -EPERM; } @@ -3535,7 +3281,7 @@ index c2c08007029d..a9d9c03ffd6d 100644 err = rewrite_section_headers(info, flags); if (err) return err; -@@ -3875,6 +3884,10 @@ void print_modules(void) +@@ -3870,6 +3879,10 @@ void print_modules(void) pr_cont(" [last unloaded: %s%s]", last_unloaded_module.name, last_unloaded_module.taints); pr_cont("\n"); diff --git a/sources b/sources index f6adec884..22634d0a6 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (linux-6.16-rc5-121-gbc9ff192a6c9.tar.xz) = c07afb3fab74f3d6bd50f02542b081f21a4f457be29171e7041bc053b5a0c1a969b638d12fc831dc995b695e5f090be966caad360979ccdc8f6950972ae1c400 -SHA512 (kernel-abi-stablelists-6.16.0.tar.xz) = f5272f96f534686087a7451a01aa3cfe01c1ed457e42c32939b89755fde74de99509981d35b24ed5f84de2341836e6a1601b2a0eac79def5c56665d99f69c564 +SHA512 (linux-6.16-rc4.tar.xz) = 1dc3d6636d1f7d6ce599140061428be3791728b48505691451bae7a9ca2dd084336f33e8123413ad90fd793f86021b16f9b772bd4de6ea7f3901b789e71306ec +SHA512 (kernel-abi-stablelists-6.16.0.tar.xz) = d44019f921613a318b84f04bdac3807688de8cc8646cb1fa4fc28d7d9b158b469bf02968d29ff7e8240e6b456d4c104a180ef20802a0d3f10d2146d0aa6af397 SHA512 (kernel-kabi-dw-6.16.0.tar.xz) = 8355665d929f547d8e2d216082b8914057a1a9a2c89835ff7bb083e51e6cea304cf9d73476fc1987eaededc06c3867d1498b7e2ed6f9a1f3b23bddb605e0209f