[PATCH v3 04/10] block: respect bio_required_sector_alignment() in blk-crypto-fallback

From: Satya Tangirala
Date: Fri Jun 04 2021 - 15:59:20 EST


Make blk_crypto_split_bio_if_needed() respect
bio_required_sector_alignment() when calling bio_split(). Without this,
blk-crypto-fallback could possibly split a bio in the middle of a data
unit, and the resulting bios can no longer be encrypted (since encryption
can only be done on complete crypto data units).

Signed-off-by: Satya Tangirala <satyat@xxxxxxxxxx>
---
block/blk-crypto-fallback.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/block/blk-crypto-fallback.c b/block/blk-crypto-fallback.c
index c322176a1e09..85c813ef670b 100644
--- a/block/blk-crypto-fallback.c
+++ b/block/blk-crypto-fallback.c
@@ -19,6 +19,7 @@
#include <linux/module.h>
#include <linux/random.h>

+#include "blk.h"
#include "blk-crypto-internal.h"

static unsigned int num_prealloc_bounce_pg = 32;
@@ -225,6 +226,8 @@ static bool blk_crypto_split_bio_if_needed(struct bio **bio_ptr)
if (num_sectors < bio_sectors(bio)) {
struct bio *split_bio;

+ num_sectors = round_down(num_sectors,
+ bio_required_sector_alignment(bio));
split_bio = bio_split(bio, num_sectors, GFP_NOIO,
&crypto_bio_split);
if (!split_bio) {
--
2.32.0.rc1.229.g3e70b5a671-goog