From 203965847cc8724810f8c47ecc5477affab206bc Mon Sep 17 00:00:00 2001 From: Lin Jinhan Date: Thu, 15 Jun 2023 16:44:35 +0800 Subject: [PATCH] crypto: rockchip: utils: optimize alignment criteria There is no length alignment requirement for the last scatterlist. Signed-off-by: Lin Jinhan Change-Id: I9625bce9379cef4c1a8507ba523f5f303d60c9e6 --- drivers/crypto/rockchip/rk_crypto_utils.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/rockchip/rk_crypto_utils.c b/drivers/crypto/rockchip/rk_crypto_utils.c index 5db73ab1628c..5758e0eede97 100644 --- a/drivers/crypto/rockchip/rk_crypto_utils.c +++ b/drivers/crypto/rockchip/rk_crypto_utils.c @@ -72,14 +72,18 @@ static int check_scatter_align(struct scatterlist *sg_src, { int in, out, align; + /* The last piece has no need for length alignment */ in = IS_ALIGNED((u32)sg_src->offset, 4) && - IS_ALIGNED((u32)sg_src->length, align_mask) && + (!sg_next(sg_src) || + IS_ALIGNED((u32)sg_src->length, align_mask)) && (sg_phys(sg_src) < SZ_4G); if (!sg_dst) return in; + /* The last piece has no need for length alignment */ out = IS_ALIGNED((u32)sg_dst->offset, 4) && - IS_ALIGNED((u32)sg_dst->length, align_mask) && + (!sg_next(sg_dst) || + IS_ALIGNED((u32)sg_dst->length, align_mask)) && (sg_phys(sg_dst) < SZ_4G); align = in && out;