Re: [PATCH v2 5/6] scsi: ufs: rpmb: Use unaligned accessors for RPMB frames

From: Bean Huo

Date: Wed Jul 22 2026 - 09:30:58 EST


On Fri, 2026-07-17 at 23:39 +0800, Li Qiang wrote:
> RPMB frame buffers are passed as u8 pointers and do not have an
>
> alignment guarantee. Use unaligned accessors for the req_resp field.
>
> Signed-off-by: Li Qiang <liqiang01@xxxxxxxxxx>
> ---
>  drivers/ufs/core/ufs-rpmb.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/ufs/core/ufs-rpmb.c b/drivers/ufs/core/ufs-rpmb.c
> index 431f85b36876..53f66b274aca 100644
> --- a/drivers/ufs/core/ufs-rpmb.c
> +++ b/drivers/ufs/core/ufs-rpmb.c
> @@ -73,7 +73,7 @@ static int ufs_rpmb_route_frames(struct device *dev, u8
> *req, unsigned int req_l
>         if (req_len < sizeof(*frm_out))
>                 return -EINVAL;
>  
> -       req_type = be16_to_cpu(frm_out->req_resp);
> +       req_type = get_unaligned_be16(&frm_out->req_resp);
>  
>         switch (req_type) {
>         case RPMB_PROGRAM_KEY:
> @@ -111,7 +111,7 @@ static int ufs_rpmb_route_frames(struct device *dev, u8
> *req, unsigned int req_l
>                 struct rpmb_frame *frm_resp = (struct rpmb_frame *)resp;
>  
>                 memset(frm_resp, 0, sizeof(*frm_resp));
> -               frm_resp->req_resp = cpu_to_be16(RPMB_RESULT_READ);
> +               put_unaligned_be16(RPMB_RESULT_READ, &frm_resp->req_resp);
>                 ret = ufs_sec_submit(hba, protocol_id, resp, resp_len, true);
>                 if (ret) {
>                         dev_err(dev, "Result read request failed with
> ret=%d\n", ret);
> --

consider Sashiko's suggestion, it's better to add __packed on struct rpmb_frame
{}?