lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ab835e29-ad4a-4377-b80a-8ef6bb35ef7b@linux.ibm.com>
Date: Wed, 20 Dec 2023 12:37:52 +0100
From: Alexandra Winter <wintera@...ux.ibm.com>
To: Wen Gu <guwen@...ux.alibaba.com>, wenjia@...ux.ibm.com, hca@...ux.ibm.com,
        gor@...ux.ibm.com, agordeev@...ux.ibm.com, davem@...emloft.net,
        edumazet@...gle.com, kuba@...nel.org, pabeni@...hat.com,
        kgraul@...ux.ibm.com, jaka@...ux.ibm.com
Cc: borntraeger@...ux.ibm.com, svens@...ux.ibm.com, alibuda@...ux.alibaba.com,
        tonylu@...ux.alibaba.com, raspl@...ux.ibm.com, schnelle@...ux.ibm.com,
        guangguan.wang@...ux.alibaba.com, linux-s390@...r.kernel.org,
        netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH net-next v8 03/10] net/smc: unify the structs of accept or
 confirm message for v1 and v2



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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ