From: sashiko-bot@kernel.org
To: "Jarkko Sakkinen" <jarkko@kernel.org>,
"David Howells" <dhowells@redhat.com>
Cc: keyrings@vger.kernel.org, linux-s390@vger.kernel.org,
linux-security-module@vger.kernel.org,
"Alexander Gordeev" <agordeev@linux.ibm.com>,
"Anna Schumaker" <anna@kernel.org>,
"Bharath SM" <bharathsm@microsoft.com>,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
"David S. Miller" <davem@davemloft.net>,
"Eric Biggers" <ebiggers@kernel.org>,
"Eric Dumazet" <edumazet@kernel.org>,
"Heiko Carstens" <hca@linux.ibm.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"James Bottomley" <James.Bottomley@HansenPartnership.com>,
"James Morris" <jmorris@namei.org>,
"Marc Dionne" <marc.dionne@auristor.com>,
"Mimi Zohar" <zohar@linux.ibm.com>,
"Namjae Jeon" <linkinjeon@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Paul Moore" <paul@paul-moore.com>,
"Paulo Alcantara" <pc@manguebit.org>,
"Ronnie Sahlberg" <ronniesahlberg@gmail.com>,
"Serge E. Hallyn" <serge@hallyn.com>,
"Shyam Prasad N" <sprasad@microsoft.com>,
"Simon Horman" <horms@kernel.org>,
"Sumit Garg" <sumit.garg@kernel.org>,
"Sven Schnelle" <svens@linux.ibm.com>,
"Tom Talpey" <tom@talpey.com>,
"Trond Myklebust" <trondmy@kernel.org>,
"Vasily Gorbik" <gor@linux.ibm.com>,
"Chuck Lever" <cel@kernel.org>,
"Jeff Layton" <jlayton@kernel.org>
Subject: Re: [PATCH v4 10/11] KEYS: Remove key_type_dead
Date: Sun, 08 Nov 2026 13:16:25 +0000 [thread overview]
Message-ID: <sashiko-outbox-203769@kernel.org> (raw)
In-Reply-To: <20261107131512.3603168-11-jarkko@kernel.org>
Thank you for your contribution! Sashiko AI review found no new issues
in this patch, but noticed 1 related pre-existing issue it does not
introduce:
- [Medium] keys: broken garbage collection timer calculation in
key_garbage_collector() [1]
--
commit 685cce051d4099c4b86015bc6b82bcd593f0652f
Author: Jarkko Sakkinen <jarkko@kernel.org>
KEYS: Remove key_type_dead
This commit removes key_type_dead and its three-phase keytype reaping logic
from the key garbage collector and unregister_key_type().
> diff --git a/security/keys/gc.c b/security/keys/gc.c
> index 7b2f32998f58b..859f331549cef 100644
> --- a/security/keys/gc.c
> +++ b/security/keys/gc.c
[ ... ]
> @@ -246,18 +192,6 @@ static void key_garbage_collector(struct work_struct *work)
> goto found_unreferenced_key;
> }
>
> - if (unlikely(gc_state & KEY_GC_REAPING_DEAD_1)) {
> - if (key->type == key_gc_dead_keytype) {
> - gc_state |= KEY_GC_FOUND_DEAD_KEY;
> - set_bit(KEY_FLAG_DEAD, &key->flags);
> - key->perm = 0;
> - goto skip_dead_key;
> - } else if (key->type == &key_type_keyring &&
> - key->restrict_link) {
> - goto found_restricted_keyring;
> - }
> - }
> -
> expiry = key->expiry;
> if (expiry != TIME64_MAX) {
> if (!(key->type->flags & KEY_TYPE_INSTANT_REAP))
[Severity: Medium]
This problem wasn't introduced by this patch, but does the timer calculation
in key_garbage_collector() mix delay-adjusted and unadjusted expiration
timestamps [1]?
security/keys/gc.c:key_garbage_collector() {
...
expiry = key->expiry;
if (expiry != TIME64_MAX) {
if (!(key->type->flags & KEY_TYPE_INSTANT_REAP))
expiry += key_gc_delay;
if (expiry > limit && expiry < new_timer) {
kdebug("will expire %x in %lld",
key_serial(key), key->expiry - limit);
new_timer = key->expiry;
}
}
...
if (new_timer != TIME64_MAX) {
new_timer += key_gc_delay;
key_schedule_gc(new_timer);
}
}
When KEY_TYPE_INSTANT_REAP is not set, expiry has key_gc_delay added before
it is compared against new_timer, but new_timer is then assigned the
unadjusted key->expiry. Subsequent keys whose adjusted expiry falls at or
after a previously recorded unadjusted key->expiry fail the
expiry < new_timer check even when their actual reap time is earlier. After
the tree scan finishes, key_gc_delay is also added unconditionally to
new_timer even if new_timer came from a key with KEY_TYPE_INSTANT_REAP set,
delaying background reaping of expired keys and dead keyring links by up to
key_gc_delay.
[1] https://sashiko.dev/#/bug/linux-327c9a06-109f-4001-9a3e-a6092c989462
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261107131512.3603168-1-jarkko@kernel.org?part=10
next prev parent reply other threads:[~2026-11-08 13:16 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-07 13:15 [PATCH v4 00/11] KEYS: Sanitize the garbage collector Jarkko Sakkinen
2026-11-07 13:15 ` [PATCH v4 01/11] KEYS: Add key_gc_flush() for draining RCU callbacks Jarkko Sakkinen
2026-11-08 13:16 ` sashiko-bot
2026-11-07 13:15 ` [PATCH v4 02/11] dns_resolver: Move the key type into a separate module Jarkko Sakkinen
2026-11-08 13:16 ` sashiko-bot
2026-11-07 13:15 ` [PATCH v4 03/11] NFSv4: Clear idmap keyring cache when the last client unloads Jarkko Sakkinen
2026-11-08 13:16 ` sashiko-bot
2026-11-07 13:15 ` [PATCH v4 04/11] smb: client: Clear idmap/SPNEGO caches when the last session is unloaded Jarkko Sakkinen
2026-11-08 13:16 ` sashiko-bot
2026-11-07 13:15 ` [PATCH v4 05/11] s390/cert_store: Start tracking subsystem keys Jarkko Sakkinen
2026-11-08 13:16 ` sashiko-bot
2026-11-07 13:15 ` [PATCH v4 06/11] KEYS: trusted: TEE: Disable sysfs bind attributes Jarkko Sakkinen
2026-11-08 13:16 ` sashiko-bot
2026-11-07 13:15 ` [PATCH v4 07/11] KEYS: trusted: TEE: Synchronize session lifetime Jarkko Sakkinen
2026-11-08 13:16 ` sashiko-bot
2026-11-07 13:15 ` [PATCH v4 08/11] rxrpc: Move key types to their own module Jarkko Sakkinen
2026-11-08 13:16 ` sashiko-bot
2026-11-07 13:15 ` [PATCH v4 09/11] KEYS: Pin the backing kernel module for a key type Jarkko Sakkinen
2026-11-08 13:16 ` sashiko-bot
2026-11-07 13:15 ` [PATCH v4 10/11] KEYS: Remove key_type_dead Jarkko Sakkinen
2026-11-08 13:16 ` sashiko-bot [this message]
2026-11-08 13:36 ` Jarkko Sakkinen
2026-11-07 13:15 ` [PATCH v4 11/11] KEYS: key_garbage_collector(): process in chunks Jarkko Sakkinen
2026-11-08 13:16 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=sashiko-outbox-203769@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=agordeev@linux.ibm.com \
--cc=anna@kernel.org \
--cc=bharathsm@microsoft.com \
--cc=borntraeger@linux.ibm.com \
--cc=cel@kernel.org \
--cc=davem@davemloft.net \
--cc=dhowells@redhat.com \
--cc=ebiggers@kernel.org \
--cc=edumazet@kernel.org \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=horms@kernel.org \
--cc=jarkko@kernel.org \
--cc=jlayton@kernel.org \
--cc=jmorris@namei.org \
--cc=keyrings@vger.kernel.org \
--cc=kuba@kernel.org \
--cc=linkinjeon@kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=marc.dionne@auristor.com \
--cc=pabeni@redhat.com \
--cc=paul@paul-moore.com \
--cc=pc@manguebit.org \
--cc=ronniesahlberg@gmail.com \
--cc=sashiko-reviews@lists.linux.dev \
--cc=serge@hallyn.com \
--cc=sprasad@microsoft.com \
--cc=sumit.garg@kernel.org \
--cc=svens@linux.ibm.com \
--cc=tom@talpey.com \
--cc=trondmy@kernel.org \
--cc=zohar@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.