From: Jarkko Sakkinen <jarkko@kernel.org>
To: David Howells <dhowells@redhat.com>
Cc: Eric Biggers <ebiggers@kernel.org>,
linux-integrity@vger.kernel.org, Mimi Zohar <zohar@linux.ibm.com>,
keyrings@vger.kernel.org,
Roberto Sassu <roberto.sassu@huawei.com>,
Dmitry Kasatkin <dmitry.kasatkin@gmail.com>,
Eric Snowberg <eric.snowberg@oracle.com>,
Paul Moore <paul@paul-moore.com>,
James Morris <jmorris@namei.org>,
"Serge E. Hallyn" <serge@hallyn.com>,
"open list:SECURITY SUBSYSTEM"
<linux-security-module@vger.kernel.org>,
open list <linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH v2 00/11] KEYS: Sanitize the garbage collector
Date: Tue, 3 Nov 2026 18:58:41 +0200 [thread overview]
Message-ID: <auoSwRMIXLajVeWs@kernel.org> (raw)
In-Reply-To: <683284.1793719946@dhowells-thinkpadp1gen8.rmtgb.csb>
On Tue, Nov 03, 2026 at 03:32:26PM +0000, David Howells wrote:
> Jarkko Sakkinen <jarkko@kernel.org> wrote:
>
> > > Actually, it can be done if the rxrpc and rxrpc_s key types are moved out
> > > into their own module upon which rxrpc.ko depends.
> >
> > Hmm... I'll experiment with this, thanks. This was useful.
>
> It's not entirely trivial. I've attached a patch that makes a start on it,
> but it needs access to bits of the security class implementations (rxkad and
> rxgk). Those bits only parse the key (and in the case of rxgk access the krb5
> code), so in theory it should be possible to extract them out.
>
> One thing that needs to be considered, though, is the security class selected
> should really be up to the application, not merely switched on by the
> security_id. This is one of the reasons I would like to add an add_key2()
> syscall that adds an additional parameter string argument.
Thanks I'll investigate this.
>
> David
> ---
> commit 365e715b91b9b2ac3030f51c31ff4de8f24a4e19
> Author: David Howells <dhowells@redhat.com>
> Date: Tue Nov 3 14:15:39 2026 +0000
>
> rxrpc: Move key types to own module
>
> Move the rxrpc and rxrpc_s key types to their own module so that if keys
> pin the module that implements the type, they don't cause outstanding
> connections to make the module unremovable.
>
> Signed-off-by: David Howells <dhowells@redhat.com>
>
> diff --git a/net/Makefile b/net/Makefile
> index 5b2dd7f07a85..f543097c89b9 100644
> --- a/net/Makefile
> +++ b/net/Makefile
> @@ -30,7 +30,7 @@ obj-$(CONFIG_LAPB) += lapb/
> obj-$(CONFIG_CAN) += can/
> obj-$(CONFIG_BT) += bluetooth/
> obj-$(CONFIG_SUNRPC) += sunrpc/
> -obj-$(CONFIG_AF_RXRPC) += rxrpc/
> +obj-$(CONFIG_RXRPC_KEYS) += rxrpc/
> obj-$(CONFIG_AF_KCM) += kcm/
> obj-$(CONFIG_STREAM_PARSER) += strparser/
> obj-$(CONFIG_ATM) += atm/
> diff --git a/net/rxrpc/Kconfig b/net/rxrpc/Kconfig
> index 2cebb666dc07..ffd42d71f85a 100644
> --- a/net/rxrpc/Kconfig
> +++ b/net/rxrpc/Kconfig
> @@ -3,6 +3,14 @@
> # RxRPC session sockets
> #
>
> +config RXRPC_KEYS
> + tristate "RxRPC key types"
> + select CRYPTO
> + select CRYPTO_LIB_DES if RXKAD
> + select KEYS
> + help
> + Say Y or M here to include support for rxrpc and rxrpc_s key types.
> +
> config AF_RXRPC
> tristate "RxRPC session sockets"
> depends on INET
> @@ -10,6 +18,7 @@ config AF_RXRPC
> select CRYPTO_LIB_DES if RXKAD
> select KEYS
> select NET_UDP_TUNNEL
> + select RXRPC_KEYS
> help
> Say Y or M here to include support for RxRPC session sockets (just
> the transport part, not the presentation part: (un)marshalling is
> diff --git a/net/rxrpc/Makefile b/net/rxrpc/Makefile
> index f994f9f30a29..196e0ce085ba 100644
> --- a/net/rxrpc/Makefile
> +++ b/net/rxrpc/Makefile
> @@ -3,6 +3,7 @@
> # Makefile for Linux kernel RxRPC
> #
>
> +obj-$(CONFIG_RXRPC_KEYS) += rxrpc_keys.o
> obj-$(CONFIG_AF_RXRPC) += rxrpc.o
>
> rxrpc-y := \
> @@ -19,7 +20,6 @@ rxrpc-y := \
> input_rack.o \
> insecure.o \
> io_thread.o \
> - key.o \
> local_event.o \
> local_object.o \
> misc.o \
> @@ -32,7 +32,6 @@ rxrpc-y := \
> rtt.o \
> security.o \
> sendmsg.o \
> - server_key.o \
> skbuff.o \
> txbuf.o \
> utils.o
> @@ -45,5 +44,9 @@ rxrpc-$(CONFIG_RXGK) += \
> rxgk_app.o \
> rxgk_kdf.o
>
> +rxrpc_keys-y := \
> + key.o \
> + server_key.o
> +
> obj-$(CONFIG_RXPERF) += rxperf.o
> obj-$(CONFIG_KUNIT) += tests/
> diff --git a/net/rxrpc/key.c b/net/rxrpc/key.c
> index cbd26da44951..c353a4304788 100644
> --- a/net/rxrpc/key.c
> +++ b/net/rxrpc/key.c
> @@ -893,3 +893,39 @@ static long rxrpc_read(const struct key *key,
> _leave(" = %zu", size);
> return size;
> }
> +
> +/*
> + * initialise and register the RxRPC protocol
> + */
> +static int __init rxrpc_keys_init(void)
> +{
> + int ret;
> +
> + ret = register_key_type(&key_type_rxrpc);
> + if (ret < 0) {
> + pr_crit("Cannot register client key type\n");
> + goto error_key_type;
> + }
> +
> + ret = register_key_type(&key_type_rxrpc_s);
> + if (ret < 0) {
> + pr_crit("Cannot register server key type\n");
> + goto error_key_type_s;
> + }
> +
> + return 0;
> +
> +error_key_type_s:
> + unregister_key_type(&key_type_rxrpc);
> +error_key_type:
> + return ret;
> +}
> +
> +static void __exit rxrpc_keys_exit(void)
> +{
> + unregister_key_type(&key_type_rxrpc_s);
> + unregister_key_type(&key_type_rxrpc);
> +}
> +
> +module_init(rxrpc_keys_init);
> +module_exit(rxrpc_keys_exit);
> diff --git a/net/rxrpc/server_key.c b/net/rxrpc/server_key.c
> index 3efe104b1930..b5e60a3364ad 100644
> --- a/net/rxrpc/server_key.c
> +++ b/net/rxrpc/server_key.c
> @@ -42,6 +42,7 @@ struct key_type key_type_rxrpc_s = {
> .destroy = rxrpc_destroy_s,
> .describe = rxrpc_describe_s,
> };
> +EXPORT_SYMBOL(key_type_rxrpc_s);
>
> /*
> * Vet the description for an RxRPC server key.
>
Br, Jarkko
prev parent reply other threads:[~2026-11-03 16:58 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-03 3:02 [RFC PATCH v2 00/11] KEYS: Sanitize the garbage collector Jarkko Sakkinen
2026-11-03 3:02 ` [RFC PATCH v2 01/11] KEYS: Add key_gc_flush() for draining RCU callbacks Jarkko Sakkinen
2026-11-03 3:02 ` [RFC PATCH v2 02/11] nvme-keyring: Add a missing key_put() call to nvme_tls_key_lookup() Jarkko Sakkinen
2026-11-03 5:33 ` Christoph Hellwig
2026-11-03 12:29 ` Jarkko Sakkinen
2026-11-03 3:02 ` [RFC PATCH v2 03/11] dns_resolver: Clear .dns_resolver cache when the last client unloads Jarkko Sakkinen
2026-11-03 3:02 ` [RFC PATCH v2 04/11] NFSv4: Clear idmap keyring " Jarkko Sakkinen
2026-11-03 3:02 ` [RFC PATCH v2 05/11] smb: client: Clear idmap/SPNEGO caches when the last session is unloaded Jarkko Sakkinen
2026-11-03 3:02 ` [RFC PATCH v2 06/11] s390/cert_store: Track subsystem keys instead of re-registering key_type Jarkko Sakkinen
2026-11-03 12:06 ` Jarkko Sakkinen
2026-11-03 3:02 ` [RFC PATCH v2 07/11] KEYS: trusted: TEE: Disable sysfs bind attributes Jarkko Sakkinen
2026-11-03 3:02 ` [RFC PATCH v2 08/11] KEYS: trusted: TEE: Synchronize session lifetime Jarkko Sakkinen
2026-11-03 3:02 ` [RFC PATCH v2 09/11] KEYS: Pin the backing kernel module for a key type Jarkko Sakkinen
2026-11-03 3:02 ` [RFC PATCH v2 10/11] KEYS: Remove key_type_dead Jarkko Sakkinen
2026-11-03 3:02 ` [RFC PATCH v2 11/11] KEYS: key_garbage_collector(): process in chunks Jarkko Sakkinen
2026-11-03 3:10 ` [RFC PATCH v2 00/11] KEYS: Sanitize the garbage collector Jarkko Sakkinen
2026-11-03 12:32 ` Jarkko Sakkinen
2026-11-03 10:03 ` David Howells
2026-11-03 12:03 ` Jarkko Sakkinen
2026-11-03 14:00 ` David Howells
2026-11-03 15:06 ` Jarkko Sakkinen
2026-11-03 15:32 ` David Howells
2026-11-03 16:58 ` 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=auoSwRMIXLajVeWs@kernel.org \
--to=jarkko@kernel.org \
--cc=dhowells@redhat.com \
--cc=dmitry.kasatkin@gmail.com \
--cc=ebiggers@kernel.org \
--cc=eric.snowberg@oracle.com \
--cc=jmorris@namei.org \
--cc=keyrings@vger.kernel.org \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=paul@paul-moore.com \
--cc=roberto.sassu@huawei.com \
--cc=serge@hallyn.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox