From: Eric Biggers <ebiggers@kernel.org>
To: linux-fscrypt@vger.kernel.org
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org
Subject: Re: [PATCH] fscrypt: Add missing superblock check in find_or_insert_direct_key()
Date: Mon, 20 Jul 2026 10:46:26 -0700 [thread overview]
Message-ID: <20260720174626.GD1865@quark> (raw)
In-Reply-To: <20260719033120.122120-1-ebiggers@kernel.org>
On Sat, Jul 18, 2026 at 08:31:20PM -0700, Eric Biggers wrote:
> The legacy 'fscrypt_direct_keys' table caches master keys that are used
> by v1 encryption policies that have FSCRYPT_POLICY_FLAG_DIRECT_KEY.
> It's just a global table for all filesystems (since the keys can be
> provided by the legacy process-subscribed keyrings mechanism, which
> makes it difficult to reuse super_block::s_master_keys).
>
> The entries in it ('struct fscrypt_direct_key') do contain a super_block
> pointer, though, for passing to fscrypt_destroy_inline_crypt_key() when
> the last inode that references the key is evicted.
>
> However, when finding the fscrypt_direct_key for an inode, we weren't
> actually comparing the super_block pointer. As a result, inodes with
> different super_blocks could point to the same fscrypt_direct_key. That
> could extend the lifetime of a fscrypt_direct_key beyond the
> super_block it points to, causing a use-after-free later.
>
> Fix this by creating distinct fscrypt_direct_key structs for distinct
> super_block structs.
>
> Note that this problem doesn't exist in the v2 policy equivalent
> ("per-mode keys"), since the data structures there are per super_block.
>
> Fixes: 22e9947a4b2b ("fscrypt: stop holding extra request_queue references")
> Cc: stable@vger.kernel.org
> Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Applied to https://git.kernel.org/pub/scm/fs/fscrypt/linux.git/log/?h=for-current
- Eric
prev parent reply other threads:[~2026-07-20 17:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-19 3:31 [PATCH] fscrypt: Add missing superblock check in find_or_insert_direct_key() Eric Biggers
2026-07-20 9:22 ` Christoph Hellwig
2026-07-20 17:46 ` Eric Biggers [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=20260720174626.GD1865@quark \
--to=ebiggers@kernel.org \
--cc=linux-fscrypt@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.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.