kernel-6.16.0-0.rc5.250711gbc9ff192a6c9.49

* Fri Jul 11 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc5.bc9ff192a6c9.49]
- 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 07:37:40 -06:00
parent c34cb97b0f
commit 1692999cb0
No known key found for this signature in database
GPG Key ID: B8FA7924A4B1C140
26 changed files with 336 additions and 33 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 = 47
RHEL_RELEASE = 49
#
# RHEL_REBASE_NUM

View File

@ -1,3 +1,6 @@
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

@ -1752,7 +1752,8 @@ CONFIG_CRYPTO_POLY1305_NEON=y
CONFIG_CRYPTO_POLYVAL_ARM64_CE=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM64_CE=y

View File

@ -1752,7 +1752,8 @@ CONFIG_CRYPTO_POLY1305_NEON=y
CONFIG_CRYPTO_POLYVAL_ARM64_CE=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM64_CE=y

View File

@ -1752,7 +1752,8 @@ CONFIG_CRYPTO_POLY1305_NEON=y
CONFIG_CRYPTO_POLYVAL_ARM64_CE=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM64_CE=y

View File

@ -1752,7 +1752,8 @@ CONFIG_CRYPTO_POLY1305_NEON=y
CONFIG_CRYPTO_POLYVAL_ARM64_CE=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM64_CE=y

View File

@ -1756,7 +1756,8 @@ CONFIG_CRYPTO_POLY1305_NEON=y
CONFIG_CRYPTO_POLYVAL_ARM64_CE=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM64_CE=y

View File

@ -1756,7 +1756,8 @@ CONFIG_CRYPTO_POLY1305_NEON=y
CONFIG_CRYPTO_POLYVAL_ARM64_CE=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM64_CE=y

View File

@ -1753,7 +1753,8 @@ CONFIG_CRYPTO_POLY1305_NEON=y
CONFIG_CRYPTO_POLYVAL_ARM64_CE=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM64_CE=y

View File

@ -1753,7 +1753,8 @@ CONFIG_CRYPTO_POLY1305_NEON=y
CONFIG_CRYPTO_POLYVAL_ARM64_CE=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM64_CE=y

View File

@ -1240,7 +1240,8 @@ CONFIG_CRYPTO_POLY1305=m
# CONFIG_CRYPTO_POLY1305_P10 is not set
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
# CONFIG_CRYPTO_SHA1_PPC is not set

View File

@ -1239,7 +1239,8 @@ CONFIG_CRYPTO_POLY1305=m
# CONFIG_CRYPTO_POLY1305_P10 is not set
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
# CONFIG_CRYPTO_SHA1_PPC is not set

View File

@ -1271,7 +1271,8 @@ CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_POLY1305=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1=y

View File

@ -1270,7 +1270,8 @@ CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_POLY1305=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1=y

View File

@ -1272,7 +1272,8 @@ CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_POLY1305=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1=y

View File

@ -1271,7 +1271,8 @@ CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_POLY1305=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1=y

View File

@ -1243,7 +1243,8 @@ CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_POLY1305=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_S390=m

View File

@ -1242,7 +1242,8 @@ CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_POLY1305=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_S390=m

View File

@ -1350,7 +1350,8 @@ CONFIG_CRYPTO_POLY1305_X86_64=y
CONFIG_CRYPTO_POLYVAL_CLMUL_NI=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m
CONFIG_CRYPTO_SERPENT_AVX_X86_64=m

View File

@ -1349,7 +1349,8 @@ CONFIG_CRYPTO_POLY1305_X86_64=y
CONFIG_CRYPTO_POLYVAL_CLMUL_NI=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m
CONFIG_CRYPTO_SERPENT_AVX_X86_64=m

View File

@ -1351,7 +1351,8 @@ CONFIG_CRYPTO_POLY1305_X86_64=y
CONFIG_CRYPTO_POLYVAL_CLMUL_NI=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m
CONFIG_CRYPTO_SERPENT_AVX_X86_64=m

View File

@ -1350,7 +1350,8 @@ CONFIG_CRYPTO_POLY1305_X86_64=y
CONFIG_CRYPTO_POLYVAL_CLMUL_NI=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_SELFTESTS is not set
# CONFIG_CRYPTO_SELFTESTS_FULL is not set
CONFIG_CRYPTO_SELFTESTS=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m
CONFIG_CRYPTO_SERPENT_AVX_X86_64=m

View File

@ -1,7 +1,17 @@
* Wed Jul 09 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc5.733923397fd9.47]
* Fri Jul 11 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc5.bc9ff192a6c9.49]
- 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:

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.250709g733923397fd9.47
%define pkgrelease 0.rc5.250711gbc9ff192a6c9.49
%define kversion 6
%define tarfile_release 6.16-rc5-38-g733923397fd9
%define tarfile_release 6.16-rc5-121-gbc9ff192a6c9
# 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.250709g733923397fd9.47%{?buildid}%{?dist}
%define specrelease 0.rc5.250711gbc9ff192a6c9.49%{?buildid}%{?dist}
# This defines the kabi tarball version
%define kabiversion 6.16.0
@ -1179,7 +1179,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,7 +1194,9 @@ 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}
@ -1207,6 +1209,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
cross-glibc package.
%endif
%package debuginfo-common-%{_target_cpu}
Summary: Kernel source files used by %{name}-debuginfo packages
@ -1403,6 +1406,7 @@ 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
@ -1410,6 +1414,7 @@ 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
@ -4347,9 +4352,20 @@ fi\
#
#
%changelog
* Wed Jul 09 2025 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.16.0-0.rc5.733923397fd9.47]
* 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]
- 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

View File

@ -27,6 +27,10 @@
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 +++--
@ -45,6 +49,7 @@
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 +
@ -75,7 +80,7 @@
security/integrity/platform_certs/load_uefi.c | 6 +-
security/lockdown/Kconfig | 13 +
security/lockdown/lockdown.c | 11 +
77 files changed, 2720 insertions(+), 207 deletions(-)
82 files changed, 2788 insertions(+), 233 deletions(-)
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 07e22ba5bfe3..f9d712044457 100644
@ -276,10 +281,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 55fc331af337..f5d5e59058a2 100644
index 393d71124f5d..ea142284db99 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -1427,7 +1427,7 @@ endchoice
@@ -1428,7 +1428,7 @@ endchoice
config ARM64_FORCE_52BIT
bool "Force 52-bit virtual addresses for userspace"
@ -1496,6 +1501,223 @@ 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
@ -2277,6 +2499,38 @@ 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

View File

@ -1,3 +1,3 @@
SHA512 (linux-6.16-rc5-38-g733923397fd9.tar.xz) = 6da0c3f0e7814beae5e9f8d82379495065bfc4e41c9d16a99d9c2b07ddad365dfd7e45e40ed7d009b2a1f24e10269802b4a6bc0094b11978a2a9309fffb51eac
SHA512 (kernel-abi-stablelists-6.16.0.tar.xz) = 689a17ab5b129442e39e051ae664688938882ea8d2a7bee2969b0c89e69054a5387ec684b33df9c765ad46b03bf7b618f6d1d2df7988971152c191ede626feda
SHA512 (kernel-kabi-dw-6.16.0.tar.xz) = c8bf6d08b6d29535b40b4b4411b7460253982633c5d15ab260a694aa951ea8a61ba6fa7fe61033086e91d9d19dc384e2d33e131c2be31535b139250314022e5d
SHA512 (linux-6.16-rc5-121-gbc9ff192a6c9.tar.xz) = c07afb3fab74f3d6bd50f02542b081f21a4f457be29171e7041bc053b5a0c1a969b638d12fc831dc995b695e5f090be966caad360979ccdc8f6950972ae1c400
SHA512 (kernel-abi-stablelists-6.16.0.tar.xz) = f5272f96f534686087a7451a01aa3cfe01c1ed457e42c32939b89755fde74de99509981d35b24ed5f84de2341836e6a1601b2a0eac79def5c56665d99f69c564
SHA512 (kernel-kabi-dw-6.16.0.tar.xz) = 8355665d929f547d8e2d216082b8914057a1a9a2c89835ff7bb083e51e6cea304cf9d73476fc1987eaededc06c3867d1498b7e2ed6f9a1f3b23bddb605e0209f