From: Jarkko Sakkinen <jarkko@kernel.org>
To: David Howells <dhowells@redhat.com>
Cc: keyrings@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
"open list:LIBRARY CODE" <linux-kernel@vger.kernel.org>,
Eric Biggers <ebiggers@kernel.org>
Subject: Re: [PATCH v2 0/6] KEYS: From assoc_array to rhashtable migration
Date: Fri, 23 Oct 2026 15:36:37 +0300 [thread overview]
Message-ID: <attU1XQg7BIvhPag@kernel.org> (raw)
In-Reply-To: <20261023120953.1206778-1-jarkko@kernel.org>
On Fri, Oct 23, 2026 at 03:09:20PM +0300, Jarkko Sakkinen wrote:
> The keyring subsystem depends on assoc_array for searching keys by their
> description, type and domain. It is the sole user of this data structure,
> which has during the age of LLMs transformed into a maintenance nightmare.
>
> assoc_array needs to be replaced with a data structure meeting the
> following criteria:
>
> 1. Must be suitable for a sparse key-value store.
> 2. Must have multiple in-kernel users.
> 3. Would be nice if it had dedicated maintainers.
>
> rhashtable is likely the best pick from the available options as it is
> designed for a sparse key space, has dedicated maintainers, and multiple
> in-kernel users.
>
> CHANGES
> =======
>
> v2:
> - Tried to address all the issues pointed out by David and Eric. Tell me
> if something was ignored, as that would be an unintentional mishap.
> - Updated and trimmed the source code comments.
> - For assoc_array_edit I decided to go with two-element pointer array,
> which shifts a bit what David suggested.
> - Dropped is_keyring flag. It was so obvious call so I mention it here
> just in case because too obvious maxes out my self-doubt ;-)
> - Used cleanup.h primitives where I possibly could especially in order
> to make fallible initializations more bug-resistant.
> - The already-ack'd bug fixes are included but will be dropped as soon
> as I've sent them over to Linus.
>
> VERSIONS
> ========
>
> - v2:
> https://lore.kernel.org/keyrings/20261016215326.4110064-1-jarkko@kernel.org/`
>
> Jarkko Sakkinen (6):
> KEYS: Expand key->{datalen,quotalen} to unsigned int
> KEYS: Reject descriptions larger than KEY_MAX_DESC_SIZE
> KEYS: Verify the key identity in __key_unlink_begin
> KEYS: Introduce keyring_is_empty()
> KEYS: Replace assoc_array with rhashtable
> lib: Remove assoc_array
>
> Documentation/core-api/assoc_array.rst | 564 ------
> Documentation/core-api/index.rst | 1 -
> .../zh_CN/core-api/assoc_array.rst | 473 -----
> .../translations/zh_CN/core-api/index.rst | 1 -
> drivers/md/dm-verity-verify-sig.c | 2 +-
> fs/smb/client/cifsacl.c | 6 +-
> fs/verity/signature.c | 2 +-
> include/keys/keyring-type.h | 1 -
> include/linux/assoc_array.h | 88 -
> include/linux/assoc_array_priv.h | 178 --
> include/linux/key.h | 27 +-
> lib/Kconfig | 14 -
> lib/Makefile | 1 -
> lib/assoc_array.c | 1724 -----------------
> security/keys/Kconfig | 1 -
> security/keys/internal.h | 9 +-
> security/keys/key.c | 30 +-
> security/keys/keyctl.c | 2 -
> security/keys/keyring.c | 871 ++++-----
> security/keys/request_key.c | 24 +-
> .../dm-verity/test-dm-verity-keyring.sh | 2 +-
> 21 files changed, 457 insertions(+), 3564 deletions(-)
> delete mode 100644 Documentation/core-api/assoc_array.rst
> delete mode 100644 Documentation/translations/zh_CN/core-api/assoc_array.rst
> delete mode 100644 include/linux/assoc_array.h
> delete mode 100644 include/linux/assoc_array_priv.h
> delete mode 100644 lib/assoc_array.c
>
> --
> 2.47.3
>
I must have typoed my send-email command-line as Eric was supposed to be
Cc'do to the whole thread, duh. Will be addressed next round, apologies.
Br, Jarkko
prev parent reply other threads:[~2026-10-23 12:36 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-23 12:09 [PATCH v2 0/6] KEYS: From assoc_array to rhashtable migration Jarkko Sakkinen
2026-10-23 12:09 ` [PATCH v2 1/6] KEYS: Expand key->{datalen,quotalen} to unsigned int Jarkko Sakkinen
2026-10-23 12:09 ` [PATCH v2 2/6] KEYS: Reject descriptions larger than KEY_MAX_DESC_SIZE Jarkko Sakkinen
2026-10-23 12:38 ` sashiko-bot
2026-10-23 12:09 ` [PATCH v2 3/6] KEYS: Verify the key identity in __key_unlink_begin Jarkko Sakkinen
2026-10-23 12:34 ` sashiko-bot
2026-10-23 12:09 ` [PATCH v2 4/6] KEYS: Introduce keyring_is_empty() Jarkko Sakkinen
2026-10-23 12:35 ` sashiko-bot
2026-10-23 12:09 ` [PATCH v2 5/6] KEYS: Replace assoc_array with rhashtable Jarkko Sakkinen
2026-10-23 12:45 ` sashiko-bot
2026-10-23 13:22 ` Jarkko Sakkinen
2026-10-23 12:09 ` [PATCH v2 6/6] lib: Remove assoc_array Jarkko Sakkinen
2026-10-23 12:36 ` Jarkko Sakkinen [this message]
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=attU1XQg7BIvhPag@kernel.org \
--to=jarkko@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=dhowells@redhat.com \
--cc=ebiggers@kernel.org \
--cc=keyrings@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/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.