kernel-6.16.0-0.rc4.38

* Mon Jun 30 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc4.38]
- redhat/configs: clang_lto: disable CONFIG_FORTIFY_KUNIT_TEST (Scott Weaver)
Resolves:

Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
Justin M. Forbes 2025-07-11 17:38:46 -06:00
parent 1692999cb0
commit 8d9de55329
No known key found for this signature in database
GPG Key ID: B8FA7924A4B1C140
6 changed files with 40 additions and 402 deletions

View File

@ -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

View File

@ -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

View File

@ -1,62 +1,7 @@
* Fri Jul 11 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc5.bc9ff192a6c9.49]
* Mon Jun 30 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [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 <kernel-team@fedoraproject.org> [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 <kernel-team@fedoraproject.org> [6.16.0-0.rc5.8c2e52ebbe88.47]
- Linux v6.16.0-0.rc5.8c2e52ebbe88
Resolves:
* Wed Jul 09 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc5.733923397fd9.46]
- Linux v6.16.0-0.rc5.733923397fd9
Resolves:
* Tue Jul 08 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [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 <kernel-team@fedoraproject.org> [6.16.0-0.rc5.44]
- Linux v6.16.0-0.rc5
Resolves:
* Sun Jul 06 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc4.1f988d0788f5.43]
- Linux v6.16.0-0.rc4.1f988d0788f5
Resolves:
* Sat Jul 05 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc4.a79a588fc176.42]
- Linux v6.16.0-0.rc4.a79a588fc176
Resolves:
* Fri Jul 04 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [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 <kernel-team@fedoraproject.org> [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 <kernel-team@fedoraproject.org> [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 <kernel-team@fedoraproject.org> [6.16.0-0.rc4.66701750d556.38]
- Linux v6.16.0-0.rc4.66701750d556
Resolves:
* Mon Jun 30 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc4.37]
- Linux v6.16.0-0.rc4
Resolves:

View File

@ -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 <jforbes@fedoraproject.org> [6.16.0-0.rc5.250711gbc9ff192a6c9.49]
- drm/framebuffer: Acquire internal references on GEM handles (Thomas Zimmermann)
* Fri Jul 11 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc5.bc9ff192a6c9.49]
* Mon Jun 30 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc4.50]
- redhat/configs: clang_lto: disable CONFIG_FORTIFY_KUNIT_TEST (Scott Weaver)
* Fri Jul 11 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [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 <kernel-team@fedoraproject.org> [6.16.0-0.rc5.8c2e52ebbe88.47]
- Linux v6.16.0-0.rc5.8c2e52ebbe88
* Wed Jul 09 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc5.733923397fd9.46]
- Linux v6.16.0-0.rc5.733923397fd9
* Tue Jul 08 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [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 <kernel-team@fedoraproject.org> [6.16.0-0.rc5.44]
- Linux v6.16.0-0.rc5
* Sun Jul 06 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc4.1f988d0788f5.43]
- Linux v6.16.0-0.rc4.1f988d0788f5
* Sat Jul 05 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc4.a79a588fc176.42]
- Linux v6.16.0-0.rc4.a79a588fc176
* Fri Jul 04 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [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 <kernel-team@fedoraproject.org> [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 <kernel-team@fedoraproject.org> [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 <kernel-team@fedoraproject.org> [6.16.0-0.rc4.66701750d556.38]
- Linux v6.16.0-0.rc4.66701750d556
* Mon Jun 30 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc4.37]
- Linux v6.16.0-0.rc4

View File

@ -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 <linux/bits.h>
#include <linux/ctype.h>
#include <linux/list.h>
#include <linux/sched.h>
@@ -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");

View File

@ -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