[RFC PATCH v2 00/11] KEYS: Sanitize the garbage collector

From: Jarkko Sakkinen

Date: Mon Nov 02 2026 - 22:05:51 EST


1. Remove key_type_dead and replace it with the regular module semantics.
2. Replace variable size workqueue items with fixed-size 64 key chunks.

The first change has user space visible effect: rmmod semantics will change
from always succeeding into returning -EBUSY when keys or restrictions have
the LKM pinned.

CHANGES
=======

v2:
- Used v1 as a test probe for Sashiko to detect the corner cases instead of
trying to resolve even the known ones beforehand.
- Converted the client subsystems to be compatible with the module pinning
semantics.

VERSIONS
========

Jarkko Sakkinen (11):
KEYS: Add key_gc_flush() for draining RCU callbacks
nvme-keyring: Add a missing key_put() call to nvme_tls_key_lookup()
dns_resolver: Clear .dns_resolver cache when the last client unloads
NFSv4: Clear idmap keyring cache when the last client unloads
smb: client: Clear idmap/SPNEGO caches when the last session is
unloaded
s390/cert_store: Track subsystem keys instead of re-registering
key_type
KEYS: trusted: TEE: Disable sysfs bind attributes
KEYS: trusted: TEE: Synchronize session lifetime
KEYS: Pin the backing kernel module for a key type
KEYS: Remove key_type_dead
KEYS: key_garbage_collector(): process in chunks

arch/s390/kernel/cert_store.c | 161 ++++++-------
drivers/nvme/common/keyring.c | 1 +
fs/afs/main.c | 4 +
fs/nfs/dns_resolve.h | 7 +-
fs/nfs/nfs4idmap.c | 21 ++
fs/smb/client/cifs_debug.c | 2 +-
fs/smb/client/cifs_spnego.c | 8 +
fs/smb/client/cifsacl.c | 8 +
fs/smb/client/cifsfs.c | 8 +-
fs/smb/client/cifsglob.h | 2 +-
fs/smb/client/cifsproto.h | 8 +
fs/smb/client/misc.c | 19 +-
include/linux/dns_resolver.h | 13 +-
include/linux/key-type.h | 6 +-
include/linux/key.h | 2 +
net/ceph/ceph_common.c | 7 +
net/dns_resolver/dns_key.c | 28 +++
security/keys/gc.c | 266 +++++++++-------------
security/keys/internal.h | 7 +-
security/keys/key.c | 61 +++--
security/keys/keyring.c | 85 +++----
security/keys/trusted-keys/trusted_core.c | 15 +-
security/keys/trusted-keys/trusted_tee.c | 87 +++++--
23 files changed, 450 insertions(+), 376 deletions(-)

--
2.47.3