[PATCH] nvmet: use appropriate types for authentication payload lengths
Hannes Reinecke
hare at suse.de
Mon Nov 2 23:36:16 PST 2026
On 10/31/26 8:59 AM, Sreeraj S Kurup wrote:
> The authentication payload length is obtained as a u32 value from the
> NVMe command, but nvmet_auth_challenge() and nvmet_auth_success1()
> accept it as a signed int.
>
> Use u32 for the payload length parameters in both functions to keep
> their types consistent with the value returned by
> nvmet_auth_receive_data_len() and avoid an unnecessary conversion
> from unsigned to signed.
>
> Also, use size_t for data_size in nvmet_auth_challenge(), since the
> calculation includes sizeof(), which returns size_t. This avoids
> implicitly narrowing the calculated payload size to int.
>
> These changes make the payload length handling consistent with the
> underlying types and avoid potential signedness and narrowing issues.
>
> Signed-off-by: Sreeraj S Kurup <sreekuttan2156239 at gmail.com>
> ---
> drivers/nvme/target/fabrics-cmd-auth.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/nvme/target/fabrics-cmd-auth.c b/drivers/nvme/target/fabrics-cmd-auth.c
> index 70136f6c22e8..99caad6fb87f 100644
> --- a/drivers/nvme/target/fabrics-cmd-auth.c
> +++ b/drivers/nvme/target/fabrics-cmd-auth.c
> @@ -448,13 +448,13 @@ void nvmet_execute_auth_send(struct nvmet_req *req)
> nvmet_req_complete(req, status);
> }
>
> -static int nvmet_auth_challenge(struct nvmet_req *req, void *d, int al)
> +static int nvmet_auth_challenge(struct nvmet_req *req, void *d, u32 al)
> {
> struct nvmf_auth_dhchap_challenge_data *data = d;
> struct nvmet_ctrl *ctrl = req->sq->ctrl;
> int ret = 0;
> int hash_len = nvme_auth_hmac_hash_len(ctrl->shash_id);
> - int data_size = sizeof(*data) + hash_len;
> + size_t data_size = sizeof(*data) + hash_len;
>
> if (ctrl->dh_tfm)
> data_size += ctrl->dh_keysize;
> @@ -488,7 +488,7 @@ static int nvmet_auth_challenge(struct nvmet_req *req, void *d, int al)
> return ret;
> }
>
> -static int nvmet_auth_success1(struct nvmet_req *req, void *d, int al)
> +static int nvmet_auth_success1(struct nvmet_req *req, void *d, u32 al)
> {
> struct nvmf_auth_dhchap_success1_data *data = d;
> struct nvmet_ctrl *ctrl = req->sq->ctrl;
Reviewed-by: Hannes Reinecke <hare at kernel.org>
Cheers,
Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare at suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg
HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich
More information about the Linux-nvme
mailing list