Re: [RFC v3 12/27] lib: rspdm: Support SPDM get_version

From: Wilfred Mallawa

Date: Tue Feb 10 2026 - 23:01:14 EST


This is cool! some minor comments inline.

>  
>  /// The current SPDM session state for a device. Based on the
>  /// C `struct spdm_state`.
> @@ -61,7 +64,7 @@ pub(crate) fn new(
>              transport_sz,
>              keyring,
>              validate,
> -            version: 0x10,
> +            version: SPDM_MIN_VER,
>          }
>      }
>  
> @@ -217,4 +220,53 @@ pub(crate) fn spdm_exchange(
>  
>          Ok(length)
>      }
> +
> +    /// Negoiate a supported SPDM version and store the information

typo: s/Negoiate/Negotiate

> +    /// in the `SpdmState`.
> +    pub(crate) fn get_version(&mut self) -> Result<(), Error> {
> +        let mut request = GetVersionReq::default();
> +        request.version = self.version;
> +
> +        // SAFETY: `request` is repr(C) and packed, so we can
> convert it to a slice
> +        let request_buf = unsafe {
> +            from_raw_parts_mut(
> +                &mut request as *mut _ as *mut u8,
> +                core::mem::size_of::<GetVersionReq>(),
> +            )
> +        };
> +
> +        let mut response_vec: KVec<u8> =
> KVec::with_capacity(SPDM_GET_VERSION_LEN, GFP_KERNEL)?;
> +        // SAFETY: `request` is repr(C) and packed, so we can
> convert it to a slice

The SAFETY comment here refers to `request` when setting up the
response buffer, seems unneeded?

Wilfred