On Thu, Aug 27, 2026 at 09:07:15AM -0700, Linlin Zhang wrote:
> From: linlzhan <[email protected]>
> 
> ufshcd_prepare_lrbp_crypto() programs crypto_key_slot in the LRB from
> rq->crypt_keyslot.  With the blk-crypto slot path a bio can carry a
> pre-programmed physical ICE keyslot index in crypt_ctx->bc_slot rather
> than a blk_crypto_key pointer.  In that case rq->crypt_keyslot is NULL
> and the existing code incorrectly falls through to the "no encryption"
> path, leaving crypto_key_slot as -1.
> 
> Extend the function to handle both cases: when rq->crypt_keyslot is
> set, derive the slot index via blk_crypto_keyslot_index() as before;
> when bc_slot.data_unit_size_bits is non-zero, read crypto_key_slot
> directly from bc_slot.phy_slot.
> 
> Signed-off-by: linlzhan <[email protected]>
> ---
>  drivers/ufs/core/ufshcd-crypto.h | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)

This patch also looks like it's specific to the out-of-band key slot
programming interface. Skipping for now.

> 
> diff --git a/drivers/ufs/core/ufshcd-crypto.h 
> b/drivers/ufs/core/ufshcd-crypto.h
> index 8f66db94e179..2fc5601c0f76 100644
> --- a/drivers/ufs/core/ufshcd-crypto.h
> +++ b/drivers/ufs/core/ufshcd-crypto.h
> @@ -15,13 +15,21 @@
>  static inline void ufshcd_prepare_lrbp_crypto(struct request *rq,
>                                             struct ufshcd_lrb *lrbp)
>  {
> -     if (!rq || !rq->crypt_keyslot) {
> +     if (!rq) {
>               lrbp->crypto_key_slot = -1;
>               return;
>       }
>  
> -     lrbp->crypto_key_slot = blk_crypto_keyslot_index(rq->crypt_keyslot);
> -     lrbp->data_unit_num = rq->crypt_ctx->bc_dun[0];
> +     if (rq->crypt_keyslot) {
> +             lrbp->crypto_key_slot = 
> blk_crypto_keyslot_index(rq->crypt_keyslot);
> +             lrbp->data_unit_num = rq->crypt_ctx->bc_dun[0];
> +     } else if (rq->crypt_ctx && rq->crypt_ctx->bc_slot.data_unit_size_bits) 
> {
> +             lrbp->crypto_key_slot = rq->crypt_ctx->bc_slot.phy_slot;
> +             lrbp->data_unit_num = rq->crypt_ctx->bc_dun[0];
> +     } else {
> +             lrbp->crypto_key_slot = -1;
> +     }
> +
>  }
>  
>  static inline void
> -- 
> 2.34.1
> 

Attachment: signature.asc
Description: PGP signature

Reply via email to