Re: [PATCH net-next v8 03/10] net/smc: unify the structs of accept or confirm message for v1 and v2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 19.12.23 15:26, Wen Gu wrote:
>  struct smc_clc_msg_accept_confirm {	/* clc accept / confirm message */
> -	struct smc_clc_msg_hdr hdr;
> -	union {
> -		struct smcr_clc_msg_accept_confirm r0; /* SMC-R */
> -		struct { /* SMC-D */
> -			struct smcd_clc_msg_accept_confirm_common d0;
> -			u32 reserved5[3];
> -		};
> -	};
> -} __packed;			/* format defined in RFC7609 */
> -
> -struct smc_clc_msg_accept_confirm_v2 {	/* clc accept / confirm message */
>  	struct smc_clc_msg_hdr hdr;
>  	union {
>  		struct { /* SMC-R */
>  			struct smcr_clc_msg_accept_confirm r0;
> -			u8 eid[SMC_MAX_EID_LEN];
> -			u8 reserved6[8];
> -		} r1;
> +			struct { /* v2 only */
> +				u8 eid[SMC_MAX_EID_LEN];
> +				u8 reserved6[8];
> +			} __packed r1;
> +		};
>  		struct { /* SMC-D */
>  			struct smcd_clc_msg_accept_confirm_common d0;
> -			__be16 chid;
> -			u8 eid[SMC_MAX_EID_LEN];
> -			u8 reserved5[8];
> -		} d1;
> +			struct { /* v2 only, but 12 bytes reserved in v1 */
> +				__be16 chid;
> +				u8 eid[SMC_MAX_EID_LEN];
> +				u8 reserved5[8];
> +			} __packed d1;
> +		};
>  	};
>  };


I still think the __packed at the outmost level is the safest place.
Like you have it now the compiler could place unused memory between
ro and r1 or between d0 and d1.
Afaik compilers don't do that, if the blocks are word-aligned, but 
there is no guarantee. 

Up to you. My R-b still applies.
Sandy




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Kernel Development]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Info]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Linux Media]     [Device Mapper]

  Powered by Linux