Linux Security Modules development
 help / color / mirror / Atom feed
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

      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