From: Greg Kroah-Hartman Date: Sat, 30 May 2026 10:39:47 +0000 (+0200) Subject: 7.0-stable patches X-Git-Tag: v5.10.258~6 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=8f278ab78ebe60c437aff1b810dfbca2d8690460;p=thirdparty%2Fkernel%2Fstable-queue.git 7.0-stable patches added patches: security-keys-fix-missed-rcu-read-section-on-lookup.patch --- diff --git a/queue-7.0/security-keys-fix-missed-rcu-read-section-on-lookup.patch b/queue-7.0/security-keys-fix-missed-rcu-read-section-on-lookup.patch new file mode 100644 index 0000000000..a28ca2ebfa --- /dev/null +++ b/queue-7.0/security-keys-fix-missed-rcu-read-section-on-lookup.patch @@ -0,0 +1,43 @@ +From 43a1e3744548e6fd85873e6fb43e293eb4010694 Mon Sep 17 00:00:00 2001 +From: Linus Torvalds +Date: Thu, 28 May 2026 11:45:41 -0700 +Subject: security/keys: fix missed RCU read section on lookup + +From: Linus Torvalds + +commit 43a1e3744548e6fd85873e6fb43e293eb4010694 upstream. + +Nicholas Carlini reports that the keyring code calls assoc_array_find() +in find_key_to_update() without holding the RCU read lock, while the +assoc_array_gc() code really is designed around removing the node from +the tree and then freeing it after an RCU grace-period. + +The regular key handling doesn't see this because holding the keyring +semaphore hides any lifetime issues, but the persistent key handling +uses a different model. + +Instead of extending the keyring locking, just do the simple RCU locking +that the assoc_array was designed for. + +Reported-by: Nicholas Carlini +Cc: David Howells +Cc: Jarkko Sakkinen +Cc: Paul Moore +Cc: James Morris James Morris +Cc: Serge E. Hallyn +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman +--- + security/keys/keyring.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/security/keys/keyring.c ++++ b/security/keys/keyring.c +@@ -1109,6 +1109,7 @@ key_ref_t find_key_to_update(key_ref_t k + kenter("{%d},{%s,%s}", + keyring->serial, index_key->type->name, index_key->description); + ++ guard(rcu)(); + object = assoc_array_find(&keyring->keys, &keyring_assoc_array_ops, + index_key); + diff --git a/queue-7.0/series b/queue-7.0/series index a52e102e96..8f38725752 100644 --- a/queue-7.0/series +++ b/queue-7.0/series @@ -459,3 +459,4 @@ block-avoid-use-after-free-in-disk_free_zone_resourc.patch documentation-laptops-update-documentation-for-uniwi.patch platform-x86-uniwill-laptop-do-not-enable-the-chargi.patch drm-msm-restore-second-parameter-name-in-purge-and-e.patch +security-keys-fix-missed-rcu-read-section-on-lookup.patch