Linux Security Modules development
 help / color / mirror / Atom feed
From: Jarkko Sakkinen <jarkko@kernel.org>
To: Eric Biggers <ebiggers@kernel.org>
Cc: David Howells <dhowells@redhat.com>,
	keyrings@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	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 2/6] keys: reclaim link quota during keyring garbage collection
Date: Sat, 17 Oct 2026 20:06:21 +0300	[thread overview]
Message-ID: <atOrDYkuBlno9_Y7@kernel.org> (raw)
In-Reply-To: <20261017054244.GD29318@sol>

On Fri, Oct 16, 2026 at 10:42:44PM -0700, Eric Biggers wrote:
> On Sat, Oct 17, 2026 at 12:53:00AM +0300, Jarkko Sakkinen wrote:
> > Garbage collection removes dead key links without releasing their quota.
> > Repeated collection therefore leaves the owner charged for links that no
> > longer exist, eventually preventing further links with -EDQUOT.
> > 
> > Update the payload reservation from the surviving link count while holding
> > the keyring semaphore. If assoc_array_gc() fails, the tree and its count
> > remain unchanged, so the existing reservation is retained.
> > 
> > Fixes: b2a4df200d57 ("KEYS: Expand the capacity of a keyring")
> > Assisted-by: LLM
> > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > ---
> >  security/keys/keyring.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/security/keys/keyring.c b/security/keys/keyring.c
> > index 7143f3079d20..db987c891811 100644
> > --- a/security/keys/keyring.c
> > +++ b/security/keys/keyring.c
> > @@ -1755,6 +1755,8 @@ void keyring_gc(struct key *keyring, time64_t limit)
> >  	down_write(&keyring->sem);
> >  	assoc_array_gc(&keyring->keys, &keyring_assoc_array_ops,
> >  		       keyring_gc_select_iterator, &limit);
> > +	key_payload_reserve(keyring,
> > +			    keyring->keys.nr_leaves_on_tree * KEYQUOTA_LINK_BYTES);
> >  	up_write(&keyring->sem);
> >  	kleave(" [gc]");
> 
> This doesn't actually hold a reference to the keyring, so can't it race
> with key_put() which released the quota already?  Then the quota for a
> link can be released multiple times.

I agree. Thanks for checking this. I only got through the first today
but plan to inventory them all in detail.  This can be dropped without
any further consideration.

The head is the LLM assisted part from my side and I go through them
with presumption that the changes are not applicable.

> 
> - Eric

Br, Jarkko

  reply	other threads:[~2026-10-17 17:06 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-16 21:52 [RFC PATCH 0/6] KEYS: From assoc_array to rhashtable migration Jarkko Sakkinen
2026-10-16 21:52 ` [RFC PATCH 1/6] keys: prevent quota overflow and widen quotalen and datalen to 32 bits Jarkko Sakkinen
2026-10-17  5:28   ` Eric Biggers
2026-10-17 16:48     ` Jarkko Sakkinen
2026-10-16 21:53 ` [RFC PATCH 2/6] keys: reclaim link quota during keyring garbage collection Jarkko Sakkinen
2026-10-17  5:42   ` Eric Biggers
2026-10-17 17:06     ` Jarkko Sakkinen [this message]
2026-10-16 21:53 ` [RFC PATCH 3/6] keys: verify key identity on unlink and move Jarkko Sakkinen
2026-10-16 21:53 ` [RFC PATCH 4/6] keys: Add keyring_is_empty() for {fs,dm}-verity Jarkko Sakkinen
2026-10-16 21:53 ` [RFC PATCH 5/6] KEYS: Replace assoc_array with struct keyring_index Jarkko Sakkinen
2026-10-16 22:27   ` Jarkko Sakkinen
2026-10-16 21:53 ` [RFC PATCH 6/6] lib: Remove unused assoc_array Jarkko Sakkinen

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=atOrDYkuBlno9_Y7@kernel.org \
    --to=jarkko@kernel.org \
    --cc=dhowells@redhat.com \
    --cc=ebiggers@kernel.org \
    --cc=jmorris@namei.org \
    --cc=keyrings@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=paul@paul-moore.com \
    --cc=serge@hallyn.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox