[PATCH] blk-crypto: use BLK_STS_INVAL for alignment errors

Carlos Llamas posted 1 patch 1 month, 2 weeks ago
block/blk-crypto.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] blk-crypto: use BLK_STS_INVAL for alignment errors
Posted by Carlos Llamas 1 month, 2 weeks ago
Make __blk_crypto_bio_prep() propagate BLK_STS_INVAL when IO segments
fail the data unit alignment check.

This was flagged by an LTP test that expects EINVAL when performing an
O_DIRECT read with a misaligned buffer [1].

Cc: Eric Biggers <ebiggers@kernel.org>
Cc: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/all/aP-c5gPjrpsn0vJA@google.com/ [1]
Signed-off-by: Carlos Llamas <cmllamas@google.com>
---
 block/blk-crypto.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/blk-crypto.c b/block/blk-crypto.c
index 4b1ad84d1b5a..3e7bf1974cbd 100644
--- a/block/blk-crypto.c
+++ b/block/blk-crypto.c
@@ -292,7 +292,7 @@ bool __blk_crypto_bio_prep(struct bio **bio_ptr)
 	}
 
 	if (!bio_crypt_check_alignment(bio)) {
-		bio->bi_status = BLK_STS_IOERR;
+		bio->bi_status = BLK_STS_INVAL;
 		goto fail;
 	}
 
-- 
2.51.1.851.g4ebd6896fd-goog
Re: [PATCH] blk-crypto: use BLK_STS_INVAL for alignment errors
Posted by Jens Axboe 1 month, 2 weeks ago
On Thu, 30 Oct 2025 04:39:18 +0000, Carlos Llamas wrote:
> Make __blk_crypto_bio_prep() propagate BLK_STS_INVAL when IO segments
> fail the data unit alignment check.
> 
> This was flagged by an LTP test that expects EINVAL when performing an
> O_DIRECT read with a misaligned buffer [1].
> 
> 
> [...]

Applied, thanks!

[1/1] blk-crypto: use BLK_STS_INVAL for alignment errors
      commit: 0b39ca457241aeca07a613002512573e8804f93a

Best regards,
-- 
Jens Axboe
Re: [PATCH] blk-crypto: use BLK_STS_INVAL for alignment errors
Posted by Christoph Hellwig 1 month, 2 weeks ago
On Thu, Oct 30, 2025 at 04:39:18AM +0000, Carlos Llamas wrote:
> Make __blk_crypto_bio_prep() propagate BLK_STS_INVAL when IO segments
> fail the data unit alignment check.
> 
> This was flagged by an LTP test that expects EINVAL when performing an
> O_DIRECT read with a misaligned buffer [1].
> 
> Cc: Eric Biggers <ebiggers@kernel.org>
> Cc: Christoph Hellwig <hch@lst.de>
> Link: https://lore.kernel.org/all/aP-c5gPjrpsn0vJA@google.com/ [1]
> Signed-off-by: Carlos Llamas <cmllamas@google.com>
> ---
>  block/blk-crypto.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/block/blk-crypto.c b/block/blk-crypto.c
> index 4b1ad84d1b5a..3e7bf1974cbd 100644
> --- a/block/blk-crypto.c
> +++ b/block/blk-crypto.c
> @@ -292,7 +292,7 @@ bool __blk_crypto_bio_prep(struct bio **bio_ptr)
>  	}
>  
>  	if (!bio_crypt_check_alignment(bio)) {
> -		bio->bi_status = BLK_STS_IOERR;
> +		bio->bi_status = BLK_STS_INVAL;
>  		goto fail;

Note that the dio_mem_align reporting in ext4 and f2fs also need to
be updated to account for this.
Re: [PATCH] blk-crypto: use BLK_STS_INVAL for alignment errors
Posted by Eric Biggers 1 month, 2 weeks ago
On Thu, Oct 30, 2025 at 07:03:03AM +0100, Christoph Hellwig wrote:
> On Thu, Oct 30, 2025 at 04:39:18AM +0000, Carlos Llamas wrote:
> > Make __blk_crypto_bio_prep() propagate BLK_STS_INVAL when IO segments
> > fail the data unit alignment check.
> > 
> > This was flagged by an LTP test that expects EINVAL when performing an
> > O_DIRECT read with a misaligned buffer [1].
> > 
> > Cc: Eric Biggers <ebiggers@kernel.org>
> > Cc: Christoph Hellwig <hch@lst.de>
> > Link: https://lore.kernel.org/all/aP-c5gPjrpsn0vJA@google.com/ [1]
> > Signed-off-by: Carlos Llamas <cmllamas@google.com>
> > ---
> >  block/blk-crypto.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/block/blk-crypto.c b/block/blk-crypto.c
> > index 4b1ad84d1b5a..3e7bf1974cbd 100644
> > --- a/block/blk-crypto.c
> > +++ b/block/blk-crypto.c
> > @@ -292,7 +292,7 @@ bool __blk_crypto_bio_prep(struct bio **bio_ptr)
> >  	}
> >  
> >  	if (!bio_crypt_check_alignment(bio)) {
> > -		bio->bi_status = BLK_STS_IOERR;
> > +		bio->bi_status = BLK_STS_INVAL;
> >  		goto fail;
> 
> Note that the dio_mem_align reporting in ext4 and f2fs also need to
> be updated to account for this.

I'm not sure what you mean.  They already take encryption into account
and report dio_mem_align=filesystem_block_size on encrypted files.

- Eric
Re: [PATCH] blk-crypto: use BLK_STS_INVAL for alignment errors
Posted by Christoph Hellwig 1 month, 1 week ago
On Thu, Oct 30, 2025 at 10:17:04AM -0700, Eric Biggers wrote:
> I'm not sure what you mean.  They already take encryption into account
> and report dio_mem_align=filesystem_block_size on encrypted files.

Oh, right - it's just hidden a few layers deep.
Re: [PATCH] blk-crypto: use BLK_STS_INVAL for alignment errors
Posted by Eric Biggers 1 month, 2 weeks ago
On Thu, Oct 30, 2025 at 04:39:18AM +0000, Carlos Llamas wrote:
> Make __blk_crypto_bio_prep() propagate BLK_STS_INVAL when IO segments
> fail the data unit alignment check.
> 
> This was flagged by an LTP test that expects EINVAL when performing an
> O_DIRECT read with a misaligned buffer [1].
> 
> Cc: Eric Biggers <ebiggers@kernel.org>
> Cc: Christoph Hellwig <hch@lst.de>
> Link: https://lore.kernel.org/all/aP-c5gPjrpsn0vJA@google.com/ [1]
> Signed-off-by: Carlos Llamas <cmllamas@google.com>
> ---
>  block/blk-crypto.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/block/blk-crypto.c b/block/blk-crypto.c
> index 4b1ad84d1b5a..3e7bf1974cbd 100644
> --- a/block/blk-crypto.c
> +++ b/block/blk-crypto.c
> @@ -292,7 +292,7 @@ bool __blk_crypto_bio_prep(struct bio **bio_ptr)
>  	}
>  
>  	if (!bio_crypt_check_alignment(bio)) {
> -		bio->bi_status = BLK_STS_IOERR;
> +		bio->bi_status = BLK_STS_INVAL;
>  		goto fail;

Reviewed-by: Eric Biggers <ebiggers@kernel.org>

- Eric