All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Baokun Li" <libaokun@linux.alibaba.com>
Cc: linux-ext4@vger.kernel.org, linux-fscrypt@vger.kernel.org, tytso@mit.edu
Subject: Re: [PATCH 03/13] blk-crypto: reject fallback data unit sizes it can't handle
Date: Sun, 11 Oct 2026 17:20:40 +0000	[thread overview]
Message-ID: <sashiko-outbox-167341@kernel.org> (raw)
In-Reply-To: <20261011170958.1759230-4-libaokun@linux.alibaba.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] block: NULL pointer deref in blk_crypto_fallback_evict_key() on setup failure
--

commit 9e7475fafabf0ae30868c1ceef29977b6846a713
Author: Baokun Li <libaokun@linux.alibaba.com>

    blk-crypto: reject fallback data unit sizes it can't handle

This patch restricts the data unit sizes advertised by blk-crypto-fallback
to only those it actually supports. It also rejects unsupported data unit
sizes early when setting up the key, preventing failures during I/O.

> diff --git a/block/blk-crypto-fallback.c b/block/blk-crypto-fallback.c
> index 2a8f40a65158b..a75daadba4c86 100644
> --- a/block/blk-crypto-fallback.c
> +++ b/block/blk-crypto-fallback.c

[ ... ]

> @@ -612,16 +616,24 @@ static int blk_crypto_fallback_init(void)
>  }
>  
>  /*
> - * Prepare blk-crypto-fallback for the specified crypto mode.
> - * Returns -ENOPKG if the needed crypto API support is missing.
> + * Prepare blk-crypto-fallback for the specified crypto configuration.
> + * Returns -EOPNOTSUPP if the fallback can't handle the data unit size of the
> + * configuration, or -ENOPKG if the needed crypto API support is missing.
>   */
> -int blk_crypto_fallback_start_using_mode(enum blk_crypto_mode_num mode_num)
> +int blk_crypto_fallback_start_using_key(const struct blk_crypto_config *cfg)
>  {
> +	enum blk_crypto_mode_num mode_num = cfg->crypto_mode;
>  	const char *cipher_str = blk_crypto_modes[mode_num].cipher_str;
>  	struct blk_crypto_fallback_keyslot *slotp;
>  	unsigned int i;
>  	int err = 0;
>  
> +	if (!(BLK_CRYPTO_FALLBACK_DU_MASK & cfg->data_unit_size)) {
> +		pr_warn_ratelimited("can't handle data unit size %u\n",
> +				    cfg->data_unit_size);
> +		return -EOPNOTSUPP;
> +	}
> +

[Severity: High]
Does this early return bypass blk_crypto_fallback_init() and leave
blk_crypto_fallback_profile as NULL?

If this is the first fallback usage, returning here means we haven't
initialized the profile. If downstream callers (like dm-inlinecrypt) handle
this -EOPNOTSUPP error by attempting to evict the partially initialized key,
can it lead to a NULL pointer dereference?

When target teardown calls blk_crypto_evict_key(), it will eventually call
blk_crypto_fallback_evict_key(), which passes the uninitialized profile
directly:

block/blk-crypto-fallback.c:blk_crypto_fallback_evict_key() {
	return __blk_crypto_evict_key(blk_crypto_fallback_profile, key);
}

This unvalidated profile pointer is then dereferenced when checking the number
of slots:

block/blk-crypto-profile.c:__blk_crypto_evict_key() {
	...
	if (profile->num_slots == 0) {
	...
}

Could this cause a kernel panic if a user with device mapper access requests
an unsupported data unit size?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261011170958.1759230-1-libaokun@linux.alibaba.com?part=3

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

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-11 17:09 [PATCH 00/13] block, ext4: allow encryption with a block size larger than the page size Baokun Li
2026-10-11 17:09 ` [PATCH 01/13] ext4: refuse encryption when block size > " Baokun Li
2026-10-11 17:26   ` sashiko-bot
2026-10-11 17:09 ` [PATCH 02/13] ext4: reject encrypted inodes " Baokun Li
2026-10-11 17:16   ` sashiko-bot
2026-10-11 17:09 ` [PATCH 03/13] blk-crypto: reject fallback data unit sizes it can't handle Baokun Li
2026-10-11 17:20   ` sashiko-bot [this message]
2026-10-12  7:50     ` Baokun Li
2026-10-11 17:09 ` [PATCH 04/13] blk-crypto: decrypt one data unit per crypto request Baokun Li
2026-10-11 17:19   ` sashiko-bot
2026-10-11 17:09 ` [PATCH 05/13] blk-crypto: encrypt " Baokun Li
2026-10-11 17:26   ` sashiko-bot
2026-10-11 17:09 ` [PATCH 06/13] blk-crypto: support data units larger than a page Baokun Li
2026-10-11 17:27   ` sashiko-bot
2026-10-11 17:09 ` [PATCH 07/13] iomap: align the direct I/O bios of encrypted files to the block size Baokun Li
2026-10-11 17:25   ` sashiko-bot
2026-10-11 17:09 ` [PATCH 08/13] block: split encrypted bios at data unit boundaries Baokun Li
2026-10-11 17:20   ` sashiko-bot
2026-10-11 17:09 ` [PATCH 09/13] block: warn about bios that can't be split Baokun Li
2026-10-11 17:18   ` sashiko-bot
2026-10-11 17:09 ` [PATCH 10/13] block: don't require data unit aligned bio_vecs for encrypted bios Baokun Li
2026-10-11 17:24   ` sashiko-bot
2026-10-12  8:09     ` Baokun Li
2026-10-11 17:09 ` [PATCH 11/13] ext4: allow encryption with a block size larger than the page size Baokun Li
2026-10-11 17:30   ` sashiko-bot
2026-10-11 17:09 ` [PATCH 12/13] ext4: send folios that cover a wraparound to the buffer_head path Baokun Li
2026-10-11 17:22   ` sashiko-bot
2026-10-11 17:09 ` [PATCH 13/13] ext4: allow large folios for encrypted files Baokun Li
2026-10-11 17:23   ` sashiko-bot

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=sashiko-outbox-167341@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=libaokun@linux.alibaba.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fscrypt@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=tytso@mit.edu \
    /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.