On Sat, Mar 07, 2020 at 12:06:05AM +0100, mwi...@suse.com wrote:
> From: Martin Wilck <mwi...@suse.com>
> 
> Make sure that data structures used for PERSISTENT RESERVE IN/OUT
> fit into 8k buffers.
> 
> This patch breaks the libmpathpersist ABI.
>

I'm not super worried about this.  I don't really see a way for users to
hurt themselves because of this change, without making some pretty odd
assumptions.  Am I missing something?

Reviewed-by: Benjamin Marzinski <bmarz...@redhat.com>
> Signed-off-by: Martin Wilck <mwi...@suse.com>
> ---
>  libmpathpersist/mpath_persist.h | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/libmpathpersist/mpath_persist.h b/libmpathpersist/mpath_persist.h
> index 7cf4faf9..bdf4069d 100644
> --- a/libmpathpersist/mpath_persist.h
> +++ b/libmpathpersist/mpath_persist.h
> @@ -92,7 +92,7 @@ struct prin_readdescr
>       uint32_t prgeneration;
>       uint32_t additional_length;     /* The value should be either 0 or 
> divisible by 8.
>                                          0 indicates no registered 
> reservation key. */
> -     uint8_t  key_list[MPATH_MAX_PARAM_LEN];
> +     uint8_t  key_list[MPATH_MAX_PARAM_LEN - 2 * sizeof(uint32_t)];
>  };
>  
>  struct prin_resvdescr
> @@ -141,7 +141,9 @@ struct print_fulldescr_list
>  {
>       uint32_t prgeneration;
>       uint32_t number_of_descriptor;
> -     uint8_t private_buffer[MPATH_MAX_PARAM_LEN]; /*Private buffer for list 
> storage*/
> +     /* Data-in; Private buffer for list storage */
> +     uint8_t private_buffer[MPATH_MAX_PARAM_LEN - 2 * sizeof(uint32_t)];
> +     /* array of pointers into private_buffer */
>       struct prin_fulldescr *descriptors[];
>  };
>  
> @@ -163,8 +165,13 @@ struct prout_param_descriptor {          /* PROUT 
> parameter descriptor */
>       uint8_t  sa_flags;
>       uint8_t _reserved;
>       uint16_t _obsolete1;
> -     uint8_t  private_buffer[MPATH_MAX_PARAM_LEN]; /*private buffer for list 
> storage*/
> -     uint32_t num_transportid;       /* Number of Transport ID listed in 
> trnptid_list[]*/
> +     /*private buffer for list storage; data-out */
> +     /* 24: offsetof (struct prout_param_descriptor, private_buffer) */
> +     uint8_t  private_buffer[MPATH_MAX_PARAM_LEN - 24];
> +     /* Internal use below here */
> +     /* Number of Transport ID listed in trnptid_list[] */
> +     uint32_t num_transportid;
> +     /* pointers into private_buffer */
>       struct transportid *trnptid_list[];
>  };
>  
> -- 
> 2.25.1

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to