public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
@ 2025-12-23  4:41 Zhu Yanjun
  2025-12-23  5:03 ` Gustavo A. R. Silva
  2025-12-23  9:34 ` Gustavo A. R. Silva
  0 siblings, 2 replies; 20+ messages in thread
From: Zhu Yanjun @ 2025-12-23  4:41 UTC (permalink / raw)
  To: zyjzyj2000, jgg, leon, linux-rdma, linux-kernel
  Cc: Gustavo A. R. Silva, Zhu Yanjun

From: "Gustavo A. R. Silva" <gustavoars@kernel.org>

-Wflex-array-member-not-at-end was introduced in GCC-14, and we are
getting ready to enable it, globally.

Use the new TRAILING_OVERLAP() helper to fix the following warning:

21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]

This helper creates a union between a flexible-array member (FAM) and a
set of MEMBERS that would otherwise follow it.

This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
start of MEMBER aligned.

The static_assert() ensures this alignment remains, and it's
intentionally placed inmediately after the related structure --no
blank line in between.

Lastly, move the conflicting declaration struct rxe_resp_info resp;
to the end of the corresponding structure.

Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
---
V2->V3: Replace struct ib_sge with struct rxe_sge
---
 drivers/infiniband/sw/rxe/rxe_verbs.h | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
index fd48075810dd..3ffd7be8e7b1 100644
--- a/drivers/infiniband/sw/rxe/rxe_verbs.h
+++ b/drivers/infiniband/sw/rxe/rxe_verbs.h
@@ -219,12 +219,6 @@ struct rxe_resp_info {
 	u32			rkey;
 	u32			length;
 
-	/* SRQ only */
-	struct {
-		struct rxe_recv_wqe	wqe;
-		struct ib_sge		sge[RXE_MAX_SGE];
-	} srq_wqe;
-
 	/* Responder resources. It's a circular list where the oldest
 	 * resource is dropped first.
 	 */
@@ -232,7 +226,15 @@ struct rxe_resp_info {
 	unsigned int		res_head;
 	unsigned int		res_tail;
 	struct resp_res		*res;
+
+	/* SRQ only */
+	/* Must be last as it ends in a flexible-array member. */
+	TRAILING_OVERLAP(struct rxe_recv_wqe, wqe, dma.sge,
+		struct rxe_sge		sge[RXE_MAX_SGE];
+	) srq_wqe;
 };
+static_assert(offsetof(struct rxe_resp_info, srq_wqe.wqe.dma.sge) ==
+	      offsetof(struct rxe_resp_info, srq_wqe.sge));
 
 struct rxe_qp {
 	struct ib_qp		ibqp;
@@ -269,7 +271,6 @@ struct rxe_qp {
 
 	struct rxe_req_info	req;
 	struct rxe_comp_info	comp;
-	struct rxe_resp_info	resp;
 
 	atomic_t		ssn;
 	atomic_t		skb_out;
@@ -289,6 +290,9 @@ struct rxe_qp {
 	spinlock_t		state_lock; /* guard requester and completer */
 
 	struct execute_work	cleanup_work;
+
+	/* Must be last as it ends in a flexible-array member. */
+	struct rxe_resp_info	resp;
 };
 
 enum {
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  4:41 [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings Zhu Yanjun
@ 2025-12-23  5:03 ` Gustavo A. R. Silva
  2025-12-23  5:10   ` Zhu Yanjun
  2025-12-23  9:34 ` Gustavo A. R. Silva
  1 sibling, 1 reply; 20+ messages in thread
From: Gustavo A. R. Silva @ 2025-12-23  5:03 UTC (permalink / raw)
  To: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel
  Cc: Gustavo A. R. Silva



On 12/23/25 13:41, Zhu Yanjun wrote:
> From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
> 
> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
> getting ready to enable it, globally.
> 
> Use the new TRAILING_OVERLAP() helper to fix the following warning:
> 
> 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> 
> This helper creates a union between a flexible-array member (FAM) and a
> set of MEMBERS that would otherwise follow it.
> 
> This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
> the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
> start of MEMBER aligned.
> 
> The static_assert() ensures this alignment remains, and it's
> intentionally placed inmediately after the related structure --no
> blank line in between.
> 
> Lastly, move the conflicting declaration struct rxe_resp_info resp;
> to the end of the corresponding structure.
> 
> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
> ---
> V2->V3: Replace struct ib_sge with struct rxe_sge

What are you doing?

You're making a mess of this whole thing. Please, don't make changes
to my patches on your own.

-Gustavo

> ---
>   drivers/infiniband/sw/rxe/rxe_verbs.h | 18 +++++++++++-------
>   1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
> index fd48075810dd..3ffd7be8e7b1 100644
> --- a/drivers/infiniband/sw/rxe/rxe_verbs.h
> +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h
> @@ -219,12 +219,6 @@ struct rxe_resp_info {
>   	u32			rkey;
>   	u32			length;
>   
> -	/* SRQ only */
> -	struct {
> -		struct rxe_recv_wqe	wqe;
> -		struct ib_sge		sge[RXE_MAX_SGE];
> -	} srq_wqe;
> -
>   	/* Responder resources. It's a circular list where the oldest
>   	 * resource is dropped first.
>   	 */
> @@ -232,7 +226,15 @@ struct rxe_resp_info {
>   	unsigned int		res_head;
>   	unsigned int		res_tail;
>   	struct resp_res		*res;
> +
> +	/* SRQ only */
> +	/* Must be last as it ends in a flexible-array member. */
> +	TRAILING_OVERLAP(struct rxe_recv_wqe, wqe, dma.sge,
> +		struct rxe_sge		sge[RXE_MAX_SGE];
> +	) srq_wqe;
>   };
> +static_assert(offsetof(struct rxe_resp_info, srq_wqe.wqe.dma.sge) ==
> +	      offsetof(struct rxe_resp_info, srq_wqe.sge));
>   
>   struct rxe_qp {
>   	struct ib_qp		ibqp;
> @@ -269,7 +271,6 @@ struct rxe_qp {
>   
>   	struct rxe_req_info	req;
>   	struct rxe_comp_info	comp;
> -	struct rxe_resp_info	resp;
>   
>   	atomic_t		ssn;
>   	atomic_t		skb_out;
> @@ -289,6 +290,9 @@ struct rxe_qp {
>   	spinlock_t		state_lock; /* guard requester and completer */
>   
>   	struct execute_work	cleanup_work;
> +
> +	/* Must be last as it ends in a flexible-array member. */
> +	struct rxe_resp_info	resp;
>   };
>   
>   enum {


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  5:03 ` Gustavo A. R. Silva
@ 2025-12-23  5:10   ` Zhu Yanjun
  2025-12-23  5:18     ` Gustavo A. R. Silva
  2025-12-23 14:20     ` Leon Romanovsky
  0 siblings, 2 replies; 20+ messages in thread
From: Zhu Yanjun @ 2025-12-23  5:10 UTC (permalink / raw)
  To: Gustavo A. R. Silva, zyjzyj2000, jgg, leon, linux-rdma,
	linux-kernel
  Cc: Gustavo A. R. Silva


在 2025/12/22 21:03, Gustavo A. R. Silva 写道:
>
>
> On 12/23/25 13:41, Zhu Yanjun wrote:
>> From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
>>
>> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
>> getting ready to enable it, globally.
>>
>> Use the new TRAILING_OVERLAP() helper to fix the following warning:
>>
>> 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure 
>> containing a flexible array member is not at the end of another 
>> structure [-Wflex-array-member-not-at-end]
>>
>> This helper creates a union between a flexible-array member (FAM) and a
>> set of MEMBERS that would otherwise follow it.
>>
>> This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
>> the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
>> start of MEMBER aligned.
>>
>> The static_assert() ensures this alignment remains, and it's
>> intentionally placed inmediately after the related structure --no
>> blank line in between.
>>
>> Lastly, move the conflicting declaration struct rxe_resp_info resp;
>> to the end of the corresponding structure.
>>
>> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
>> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
>> ---
>> V2->V3: Replace struct ib_sge with struct rxe_sge
>
> What are you doing?

Because struct rxe_sge differs from struct ib_sge, I aligned it to use 
the same structure.

Yanjun.Zhu

>
> You're making a mess of this whole thing. Please, don't make changes
> to my patches on your own.
>
> -Gustavo
>
>> ---
>>   drivers/infiniband/sw/rxe/rxe_verbs.h | 18 +++++++++++-------
>>   1 file changed, 11 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h 
>> b/drivers/infiniband/sw/rxe/rxe_verbs.h
>> index fd48075810dd..3ffd7be8e7b1 100644
>> --- a/drivers/infiniband/sw/rxe/rxe_verbs.h
>> +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h
>> @@ -219,12 +219,6 @@ struct rxe_resp_info {
>>       u32            rkey;
>>       u32            length;
>>   -    /* SRQ only */
>> -    struct {
>> -        struct rxe_recv_wqe    wqe;
>> -        struct ib_sge        sge[RXE_MAX_SGE];
>> -    } srq_wqe;
>> -
>>       /* Responder resources. It's a circular list where the oldest
>>        * resource is dropped first.
>>        */
>> @@ -232,7 +226,15 @@ struct rxe_resp_info {
>>       unsigned int        res_head;
>>       unsigned int        res_tail;
>>       struct resp_res        *res;
>> +
>> +    /* SRQ only */
>> +    /* Must be last as it ends in a flexible-array member. */
>> +    TRAILING_OVERLAP(struct rxe_recv_wqe, wqe, dma.sge,
>> +        struct rxe_sge        sge[RXE_MAX_SGE];
>> +    ) srq_wqe;
>>   };
>> +static_assert(offsetof(struct rxe_resp_info, srq_wqe.wqe.dma.sge) ==
>> +          offsetof(struct rxe_resp_info, srq_wqe.sge));
>>     struct rxe_qp {
>>       struct ib_qp        ibqp;
>> @@ -269,7 +271,6 @@ struct rxe_qp {
>>         struct rxe_req_info    req;
>>       struct rxe_comp_info    comp;
>> -    struct rxe_resp_info    resp;
>>         atomic_t        ssn;
>>       atomic_t        skb_out;
>> @@ -289,6 +290,9 @@ struct rxe_qp {
>>       spinlock_t        state_lock; /* guard requester and completer */
>>         struct execute_work    cleanup_work;
>> +
>> +    /* Must be last as it ends in a flexible-array member. */
>> +    struct rxe_resp_info    resp;
>>   };
>>     enum {
>
-- 
Best Regards,
Yanjun.Zhu


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  5:10   ` Zhu Yanjun
@ 2025-12-23  5:18     ` Gustavo A. R. Silva
  2025-12-23  5:26       ` Zhu Yanjun
  2025-12-23 14:20     ` Leon Romanovsky
  1 sibling, 1 reply; 20+ messages in thread
From: Gustavo A. R. Silva @ 2025-12-23  5:18 UTC (permalink / raw)
  To: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel
  Cc: Gustavo A. R. Silva



On 12/23/25 14:10, Zhu Yanjun wrote:
> 
> 在 2025/12/22 21:03, Gustavo A. R. Silva 写道:
>>
>>
>> On 12/23/25 13:41, Zhu Yanjun wrote:
>>> From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
>>>
>>> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
>>> getting ready to enable it, globally.
>>>
>>> Use the new TRAILING_OVERLAP() helper to fix the following warning:
>>>
>>> 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array- 
>>> member-not-at-end]
>>>
>>> This helper creates a union between a flexible-array member (FAM) and a
>>> set of MEMBERS that would otherwise follow it.
>>>
>>> This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
>>> the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
>>> start of MEMBER aligned.
>>>
>>> The static_assert() ensures this alignment remains, and it's
>>> intentionally placed inmediately after the related structure --no
>>> blank line in between.
>>>
>>> Lastly, move the conflicting declaration struct rxe_resp_info resp;
>>> to the end of the corresponding structure.
>>>
>>> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
>>> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
>>> ---
>>> V2->V3: Replace struct ib_sge with struct rxe_sge
>>
>> What are you doing?
> 
> Because struct rxe_sge differs from struct ib_sge, I aligned it to use the same structure.

Listen, this is not how things are done upstream. Read what I previously commented:

>> You're making a mess of this whole thing. Please, don't make changes
>> to my patches on your own.

and please, learn how to properly submit patch series.

Lastly, do the changes that you want/need to implement in your code, and don't
submit my patch as part of those changes again.

-Gustavo

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  5:18     ` Gustavo A. R. Silva
@ 2025-12-23  5:26       ` Zhu Yanjun
  2025-12-23  5:34         ` Gustavo A. R. Silva
  0 siblings, 1 reply; 20+ messages in thread
From: Zhu Yanjun @ 2025-12-23  5:26 UTC (permalink / raw)
  To: Gustavo A. R. Silva, zyjzyj2000, jgg, leon, linux-rdma,
	linux-kernel
  Cc: Gustavo A. R. Silva


在 2025/12/22 21:18, Gustavo A. R. Silva 写道:
>
>
> On 12/23/25 14:10, Zhu Yanjun wrote:
>>
>> 在 2025/12/22 21:03, Gustavo A. R. Silva 写道:
>>>
>>>
>>> On 12/23/25 13:41, Zhu Yanjun wrote:
>>>> From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
>>>>
>>>> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
>>>> getting ready to enable it, globally.
>>>>
>>>> Use the new TRAILING_OVERLAP() helper to fix the following warning:
>>>>
>>>> 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure 
>>>> containing a flexible array member is not at the end of another 
>>>> structure [-Wflex-array- member-not-at-end]
>>>>
>>>> This helper creates a union between a flexible-array member (FAM) 
>>>> and a
>>>> set of MEMBERS that would otherwise follow it.
>>>>
>>>> This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
>>>> the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
>>>> start of MEMBER aligned.
>>>>
>>>> The static_assert() ensures this alignment remains, and it's
>>>> intentionally placed inmediately after the related structure --no
>>>> blank line in between.
>>>>
>>>> Lastly, move the conflicting declaration struct rxe_resp_info resp;
>>>> to the end of the corresponding structure.
>>>>
>>>> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
>>>> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
>>>> ---
>>>> V2->V3: Replace struct ib_sge with struct rxe_sge
>>>
>>> What are you doing?
>>
>> Because struct rxe_sge differs from struct ib_sge, I aligned it to 
>> use the same structure.
>
> Listen, this is not how things are done upstream. Read what I 
> previously commented:
>
>>> You're making a mess of this whole thing. Please, don't make changes
>>> to my patches on your own.
>
> and please, learn how to properly submit patch series.
>
> Lastly, do the changes that you want/need to implement in your code, 
> and don't
> submit my patch as part of those changes again.

You can correct this patch by yourself.

Yanjun.Zhu

>
> -Gustavo

-- 
Best Regards,
Yanjun.Zhu


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  5:26       ` Zhu Yanjun
@ 2025-12-23  5:34         ` Gustavo A. R. Silva
  2025-12-23  5:44           ` Zhu Yanjun
  0 siblings, 1 reply; 20+ messages in thread
From: Gustavo A. R. Silva @ 2025-12-23  5:34 UTC (permalink / raw)
  To: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel
  Cc: Gustavo A. R. Silva


>>>>> V2->V3: Replace struct ib_sge with struct rxe_sge
>>>>
>>>> What are you doing?
>>>
>>> Because struct rxe_sge differs from struct ib_sge, I aligned it to use the same structure.
>>
>> Listen, this is not how things are done upstream. Read what I previously commented:
>>
>>>> You're making a mess of this whole thing. Please, don't make changes
>>>> to my patches on your own.
>>
>> and please, learn how to properly submit patch series.
>>
>> Lastly, do the changes that you want/need to implement in your code, and don't
>> submit my patch as part of those changes again.
> 
> You can correct this patch by yourself.

https://lore.kernel.org/linux-hardening/ad8987ae-b7fe-47af-a1d2-5055749011c0@embeddedor.com/

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  5:34         ` Gustavo A. R. Silva
@ 2025-12-23  5:44           ` Zhu Yanjun
  2025-12-23  5:54             ` Gustavo A. R. Silva
  0 siblings, 1 reply; 20+ messages in thread
From: Zhu Yanjun @ 2025-12-23  5:44 UTC (permalink / raw)
  To: Gustavo A. R. Silva, zyjzyj2000, jgg, leon, linux-rdma,
	linux-kernel
  Cc: Gustavo A. R. Silva


在 2025/12/22 21:34, Gustavo A. R. Silva 写道:
>
>>>>>> V2->V3: Replace struct ib_sge with struct rxe_sge
>>>>>
>>>>> What are you doing?
>>>>
>>>> Because struct rxe_sge differs from struct ib_sge, I aligned it to 
>>>> use the same structure.
>>>
>>> Listen, this is not how things are done upstream. Read what I 
>>> previously commented:
>>>
>>>>> You're making a mess of this whole thing. Please, don't make changes
>>>>> to my patches on your own.
>>>
>>> and please, learn how to properly submit patch series.
>>>
>>> Lastly, do the changes that you want/need to implement in your code, 
>>> and don't
>>> submit my patch as part of those changes again.
>>
>> You can correct this patch by yourself.
>
> https://lore.kernel.org/linux-hardening/ad8987ae-b7fe-47af-a1d2-5055749011c0@embeddedor.com/ 
>

You need to do some changes in your commit.

Yanjun.Zhu

-- 
Best Regards,
Yanjun.Zhu


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  5:44           ` Zhu Yanjun
@ 2025-12-23  5:54             ` Gustavo A. R. Silva
  2025-12-23  6:46               ` Zhu Yanjun
  0 siblings, 1 reply; 20+ messages in thread
From: Gustavo A. R. Silva @ 2025-12-23  5:54 UTC (permalink / raw)
  To: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel
  Cc: Gustavo A. R. Silva



On 12/23/25 14:44, Zhu Yanjun wrote:
> 
> 在 2025/12/22 21:34, Gustavo A. R. Silva 写道:
>>
>>>>>>> V2->V3: Replace struct ib_sge with struct rxe_sge
>>>>>>
>>>>>> What are you doing?
>>>>>
>>>>> Because struct rxe_sge differs from struct ib_sge, I aligned it to use the same structure.
>>>>
>>>> Listen, this is not how things are done upstream. Read what I previously commented:
>>>>
>>>>>> You're making a mess of this whole thing. Please, don't make changes
>>>>>> to my patches on your own.
>>>>
>>>> and please, learn how to properly submit patch series.
>>>>
>>>> Lastly, do the changes that you want/need to implement in your code, and don't
>>>> submit my patch as part of those changes again.
>>>
>>> You can correct this patch by yourself.
>>
>> https://lore.kernel.org/linux-hardening/ad8987ae-b7fe-47af-a1d2-5055749011c0@embeddedor.com/
> 
> You need to do some changes in your commit.

This is what you haven't understood yet. If the original code is wrong (e.g. is
currently using struct ib_sge instead of struct rxe_sge or the other way around),
then _that_ code should be fixed _first_, regardless of any other patch that might
be applied on top of it.

-Gustavo


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  5:54             ` Gustavo A. R. Silva
@ 2025-12-23  6:46               ` Zhu Yanjun
  2025-12-23  9:28                 ` Gustavo A. R. Silva
  0 siblings, 1 reply; 20+ messages in thread
From: Zhu Yanjun @ 2025-12-23  6:46 UTC (permalink / raw)
  To: Gustavo A. R. Silva, zyjzyj2000, jgg, leon, linux-rdma,
	linux-kernel
  Cc: Gustavo A. R. Silva


在 2025/12/22 21:54, Gustavo A. R. Silva 写道:
>
>
> On 12/23/25 14:44, Zhu Yanjun wrote:
>>
>> 在 2025/12/22 21:34, Gustavo A. R. Silva 写道:
>>>
>>>>>>>> V2->V3: Replace struct ib_sge with struct rxe_sge
>>>>>>>
>>>>>>> What are you doing?
>>>>>>
>>>>>> Because struct rxe_sge differs from struct ib_sge, I aligned it 
>>>>>> to use the same structure.
>>>>>
>>>>> Listen, this is not how things are done upstream. Read what I 
>>>>> previously commented:
>>>>>
>>>>>>> You're making a mess of this whole thing. Please, don't make 
>>>>>>> changes
>>>>>>> to my patches on your own.
>>>>>
>>>>> and please, learn how to properly submit patch series.
>>>>>
>>>>> Lastly, do the changes that you want/need to implement in your 
>>>>> code, and don't
>>>>> submit my patch as part of those changes again.
>>>>
>>>> You can correct this patch by yourself.
>>>
>>> https://lore.kernel.org/linux-hardening/ad8987ae-b7fe-47af-a1d2-5055749011c0@embeddedor.com/ 
>>>
>>
>> You need to do some changes in your commit.
>
> This is what you haven't understood yet. If the original code is wrong 
> (e.g. is
> currently using struct ib_sge instead of struct rxe_sge or the other 
> way around),
> then _that_ code should be fixed _first_, regardless of any other 
> patch that might
> be applied on top of it.

Your commit should align the 2 structs.

Thanks,

Yanjun.Zhu

>
> -Gustavo
>
-- 
Best Regards,
Yanjun.Zhu


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  6:46               ` Zhu Yanjun
@ 2025-12-23  9:28                 ` Gustavo A. R. Silva
  2025-12-23 16:02                   ` Zhu Yanjun
  0 siblings, 1 reply; 20+ messages in thread
From: Gustavo A. R. Silva @ 2025-12-23  9:28 UTC (permalink / raw)
  To: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel
  Cc: Gustavo A. R. Silva



On 12/23/25 15:46, Zhu Yanjun wrote:
> 
> 在 2025/12/22 21:54, Gustavo A. R. Silva 写道:
>>
>>
>> On 12/23/25 14:44, Zhu Yanjun wrote:
>>>
>>> 在 2025/12/22 21:34, Gustavo A. R. Silva 写道:
>>>>
>>>>>>>>> V2->V3: Replace struct ib_sge with struct rxe_sge
>>>>>>>>
>>>>>>>> What are you doing?
>>>>>>>
>>>>>>> Because struct rxe_sge differs from struct ib_sge, I aligned it to use the same structure.
>>>>>>
>>>>>> Listen, this is not how things are done upstream. Read what I previously commented:
>>>>>>
>>>>>>>> You're making a mess of this whole thing. Please, don't make changes
>>>>>>>> to my patches on your own.
>>>>>>
>>>>>> and please, learn how to properly submit patch series.
>>>>>>
>>>>>> Lastly, do the changes that you want/need to implement in your code, and don't
>>>>>> submit my patch as part of those changes again.
>>>>>
>>>>> You can correct this patch by yourself.
>>>>
>>>> https://lore.kernel.org/linux-hardening/ad8987ae-b7fe-47af-a1d2-5055749011c0@embeddedor.com/
>>>
>>> You need to do some changes in your commit.
>>
>> This is what you haven't understood yet. If the original code is wrong (e.g. is
>> currently using struct ib_sge instead of struct rxe_sge or the other way around),
>> then _that_ code should be fixed _first_, regardless of any other patch that might
>> be applied on top of it.
> 
> Your commit should align the 2 structs.

No. It should not. To understand why, read my previous responses.

-Gustavo


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  4:41 [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings Zhu Yanjun
  2025-12-23  5:03 ` Gustavo A. R. Silva
@ 2025-12-23  9:34 ` Gustavo A. R. Silva
  2025-12-23 16:38   ` Greg Sword
  1 sibling, 1 reply; 20+ messages in thread
From: Gustavo A. R. Silva @ 2025-12-23  9:34 UTC (permalink / raw)
  To: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel
  Cc: Gustavo A. R. Silva



On 12/23/25 13:41, Zhu Yanjun wrote:
> From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
> 
> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
> getting ready to enable it, globally.
> 
> Use the new TRAILING_OVERLAP() helper to fix the following warning:
> 
> 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> 
> This helper creates a union between a flexible-array member (FAM) and a
> set of MEMBERS that would otherwise follow it.
> 
> This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
> the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
> start of MEMBER aligned.
> 
> The static_assert() ensures this alignment remains, and it's
> intentionally placed inmediately after the related structure --no
> blank line in between.
> 
> Lastly, move the conflicting declaration struct rxe_resp_info resp;
> to the end of the corresponding structure.
> 
> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>

NACK.

I didn't write this patch.

Please, don't ever submit modified patches on my behalf.

> ---
> V2->V3: Replace struct ib_sge with struct rxe_sge

Patch granularity is a fundamental thing. Changes addressing different
issues should not be mixed together. Previously existing issues (if any)
must be addressed in separate patches.

-Gustavo

> ---
>   drivers/infiniband/sw/rxe/rxe_verbs.h | 18 +++++++++++-------
>   1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
> index fd48075810dd..3ffd7be8e7b1 100644
> --- a/drivers/infiniband/sw/rxe/rxe_verbs.h
> +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h
> @@ -219,12 +219,6 @@ struct rxe_resp_info {
>   	u32			rkey;
>   	u32			length;
>   
> -	/* SRQ only */
> -	struct {
> -		struct rxe_recv_wqe	wqe;
> -		struct ib_sge		sge[RXE_MAX_SGE];
> -	} srq_wqe;
> -
>   	/* Responder resources. It's a circular list where the oldest
>   	 * resource is dropped first.
>   	 */
> @@ -232,7 +226,15 @@ struct rxe_resp_info {
>   	unsigned int		res_head;
>   	unsigned int		res_tail;
>   	struct resp_res		*res;
> +
> +	/* SRQ only */
> +	/* Must be last as it ends in a flexible-array member. */
> +	TRAILING_OVERLAP(struct rxe_recv_wqe, wqe, dma.sge,
> +		struct rxe_sge		sge[RXE_MAX_SGE];
> +	) srq_wqe;
>   };
> +static_assert(offsetof(struct rxe_resp_info, srq_wqe.wqe.dma.sge) ==
> +	      offsetof(struct rxe_resp_info, srq_wqe.sge));
>   
>   struct rxe_qp {
>   	struct ib_qp		ibqp;
> @@ -269,7 +271,6 @@ struct rxe_qp {
>   
>   	struct rxe_req_info	req;
>   	struct rxe_comp_info	comp;
> -	struct rxe_resp_info	resp;
>   
>   	atomic_t		ssn;
>   	atomic_t		skb_out;
> @@ -289,6 +290,9 @@ struct rxe_qp {
>   	spinlock_t		state_lock; /* guard requester and completer */
>   
>   	struct execute_work	cleanup_work;
> +
> +	/* Must be last as it ends in a flexible-array member. */
> +	struct rxe_resp_info	resp;
>   };
>   
>   enum {


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  5:10   ` Zhu Yanjun
  2025-12-23  5:18     ` Gustavo A. R. Silva
@ 2025-12-23 14:20     ` Leon Romanovsky
  2025-12-23 16:13       ` Zhu Yanjun
  1 sibling, 1 reply; 20+ messages in thread
From: Leon Romanovsky @ 2025-12-23 14:20 UTC (permalink / raw)
  To: Zhu Yanjun
  Cc: Gustavo A. R. Silva, zyjzyj2000, jgg, linux-rdma, linux-kernel,
	Gustavo A. R. Silva

On Mon, Dec 22, 2025 at 09:10:11PM -0800, Zhu Yanjun wrote:
> 
> 在 2025/12/22 21:03, Gustavo A. R. Silva 写道:
> > 
> > 
> > On 12/23/25 13:41, Zhu Yanjun wrote:
> > > From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
> > > 
> > > -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
> > > getting ready to enable it, globally.
> > > 
> > > Use the new TRAILING_OVERLAP() helper to fix the following warning:
> > > 
> > > 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure
> > > containing a flexible array member is not at the end of another
> > > structure [-Wflex-array-member-not-at-end]
> > > 
> > > This helper creates a union between a flexible-array member (FAM) and a
> > > set of MEMBERS that would otherwise follow it.
> > > 
> > > This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
> > > the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
> > > start of MEMBER aligned.
> > > 
> > > The static_assert() ensures this alignment remains, and it's
> > > intentionally placed inmediately after the related structure --no
> > > blank line in between.
> > > 
> > > Lastly, move the conflicting declaration struct rxe_resp_info resp;
> > > to the end of the corresponding structure.
> > > 
> > > Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> > > Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
> > > ---
> > > V2->V3: Replace struct ib_sge with struct rxe_sge
> > 
> > What are you doing?
> 
> Because struct rxe_sge differs from struct ib_sge, I aligned it to use the
> same structure.

Zhu,

Please submit your rxe_sge to ib_sge change as standalone patch and
Gustavo will resubmit his patch later if he wants so.

Thanks

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  9:28                 ` Gustavo A. R. Silva
@ 2025-12-23 16:02                   ` Zhu Yanjun
  0 siblings, 0 replies; 20+ messages in thread
From: Zhu Yanjun @ 2025-12-23 16:02 UTC (permalink / raw)
  To: Gustavo A. R. Silva, zyjzyj2000, jgg, leon, linux-rdma,
	linux-kernel
  Cc: Gustavo A. R. Silva

在 2025/12/23 1:28, Gustavo A. R. Silva 写道:
> 
> 
> On 12/23/25 15:46, Zhu Yanjun wrote:
>>
>> 在 2025/12/22 21:54, Gustavo A. R. Silva 写道:
>>>
>>>
>>> On 12/23/25 14:44, Zhu Yanjun wrote:
>>>>
>>>> 在 2025/12/22 21:34, Gustavo A. R. Silva 写道:
>>>>>
>>>>>>>>>> V2->V3: Replace struct ib_sge with struct rxe_sge
>>>>>>>>>
>>>>>>>>> What are you doing?
>>>>>>>>
>>>>>>>> Because struct rxe_sge differs from struct ib_sge, I aligned it 
>>>>>>>> to use the same structure.
>>>>>>>
>>>>>>> Listen, this is not how things are done upstream. Read what I 
>>>>>>> previously commented:
>>>>>>>
>>>>>>>>> You're making a mess of this whole thing. Please, don't make 
>>>>>>>>> changes
>>>>>>>>> to my patches on your own.
>>>>>>>
>>>>>>> and please, learn how to properly submit patch series.
>>>>>>>
>>>>>>> Lastly, do the changes that you want/need to implement in your 
>>>>>>> code, and don't
>>>>>>> submit my patch as part of those changes again.
>>>>>>
>>>>>> You can correct this patch by yourself.
>>>>>
>>>>> https://lore.kernel.org/linux-hardening/ad8987ae-b7fe-47af- 
>>>>> a1d2-5055749011c0@embeddedor.com/
>>>>
>>>> You need to do some changes in your commit.
>>>
>>> This is what you haven't understood yet. If the original code is 
>>> wrong (e.g. is
>>> currently using struct ib_sge instead of struct rxe_sge or the other 
>>> way around),
>>> then _that_ code should be fixed _first_, regardless of any other 
>>> patch that might
>>> be applied on top of it.
>>
>> Your commit should align the 2 structs.
> 
> No. It should not. To understand why, read my previous responses.

There is something wrong in your commit. Please correct it. I have 
already pointed it out.

Yanjun.Zhu
> 
> -Gustavo
> 


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23 14:20     ` Leon Romanovsky
@ 2025-12-23 16:13       ` Zhu Yanjun
  0 siblings, 0 replies; 20+ messages in thread
From: Zhu Yanjun @ 2025-12-23 16:13 UTC (permalink / raw)
  To: Leon Romanovsky
  Cc: Gustavo A. R. Silva, zyjzyj2000, jgg, linux-rdma, linux-kernel,
	Gustavo A. R. Silva


在 2025/12/23 6:20, Leon Romanovsky 写道:
> On Mon, Dec 22, 2025 at 09:10:11PM -0800, Zhu Yanjun wrote:
>> 在 2025/12/22 21:03, Gustavo A. R. Silva 写道:
>>>
>>> On 12/23/25 13:41, Zhu Yanjun wrote:
>>>> From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
>>>>
>>>> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
>>>> getting ready to enable it, globally.
>>>>
>>>> Use the new TRAILING_OVERLAP() helper to fix the following warning:
>>>>
>>>> 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure
>>>> containing a flexible array member is not at the end of another
>>>> structure [-Wflex-array-member-not-at-end]
>>>>
>>>> This helper creates a union between a flexible-array member (FAM) and a
>>>> set of MEMBERS that would otherwise follow it.
>>>>
>>>> This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
>>>> the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
>>>> start of MEMBER aligned.
>>>>
>>>> The static_assert() ensures this alignment remains, and it's
>>>> intentionally placed inmediately after the related structure --no
>>>> blank line in between.
>>>>
>>>> Lastly, move the conflicting declaration struct rxe_resp_info resp;
>>>> to the end of the corresponding structure.
>>>>
>>>> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
>>>> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
>>>> ---
>>>> V2->V3: Replace struct ib_sge with struct rxe_sge
>>> What are you doing?
>> Because struct rxe_sge differs from struct ib_sge, I aligned it to use the
>> same structure.
> Zhu,
>
> Please submit your rxe_sge to ib_sge change as standalone patch and
> Gustavo will resubmit his patch later if he wants so.


OK. I will do soon.

Yanjun.Zhu


>
> Thanks

-- 
Best Regards,
Yanjun.Zhu


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23  9:34 ` Gustavo A. R. Silva
@ 2025-12-23 16:38   ` Greg Sword
  2025-12-23 16:59     ` Gustavo A. R. Silva
  0 siblings, 1 reply; 20+ messages in thread
From: Greg Sword @ 2025-12-23 16:38 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel,
	Gustavo A. R. Silva

On Tue, Dec 23, 2025 at 5:35 PM Gustavo A. R. Silva
<gustavo@embeddedor.com> wrote:
>
>
>
> On 12/23/25 13:41, Zhu Yanjun wrote:
> > From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
> >
> > -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
> > getting ready to enable it, globally.
> >
> > Use the new TRAILING_OVERLAP() helper to fix the following warning:
> >
> > 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> >
> > This helper creates a union between a flexible-array member (FAM) and a
> > set of MEMBERS that would otherwise follow it.
> >
> > This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
> > the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
> > start of MEMBER aligned.
> >
> > The static_assert() ensures this alignment remains, and it's
> > intentionally placed inmediately after the related structure --no
> > blank line in between.
> >
> > Lastly, move the conflicting declaration struct rxe_resp_info resp;
> > to the end of the corresponding structure.
> >
> > Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> > Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
>
> NACK.

Just a small reminder about community conventions: reviewers can NACK
a patch, but authors generally should not NACK their own patches.

>
> I didn't write this patch.
>
> Please, don't ever submit modified patches on my behalf.
>
> > ---
> > V2->V3: Replace struct ib_sge with struct rxe_sge
>
> Patch granularity is a fundamental thing. Changes addressing different
> issues should not be mixed together. Previously existing issues (if any)
> must be addressed in separate patches.
>
> -Gustavo
>
> > ---
> >   drivers/infiniband/sw/rxe/rxe_verbs.h | 18 +++++++++++-------
> >   1 file changed, 11 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
> > index fd48075810dd..3ffd7be8e7b1 100644
> > --- a/drivers/infiniband/sw/rxe/rxe_verbs.h
> > +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h
> > @@ -219,12 +219,6 @@ struct rxe_resp_info {
> >       u32                     rkey;
> >       u32                     length;
> >
> > -     /* SRQ only */
> > -     struct {
> > -             struct rxe_recv_wqe     wqe;
> > -             struct ib_sge           sge[RXE_MAX_SGE];
> > -     } srq_wqe;
> > -
> >       /* Responder resources. It's a circular list where the oldest
> >        * resource is dropped first.
> >        */
> > @@ -232,7 +226,15 @@ struct rxe_resp_info {
> >       unsigned int            res_head;
> >       unsigned int            res_tail;
> >       struct resp_res         *res;
> > +
> > +     /* SRQ only */
> > +     /* Must be last as it ends in a flexible-array member. */
> > +     TRAILING_OVERLAP(struct rxe_recv_wqe, wqe, dma.sge,
> > +             struct rxe_sge          sge[RXE_MAX_SGE];
> > +     ) srq_wqe;
> >   };
> > +static_assert(offsetof(struct rxe_resp_info, srq_wqe.wqe.dma.sge) ==
> > +           offsetof(struct rxe_resp_info, srq_wqe.sge));
> >
> >   struct rxe_qp {
> >       struct ib_qp            ibqp;
> > @@ -269,7 +271,6 @@ struct rxe_qp {
> >
> >       struct rxe_req_info     req;
> >       struct rxe_comp_info    comp;
> > -     struct rxe_resp_info    resp;
> >
> >       atomic_t                ssn;
> >       atomic_t                skb_out;
> > @@ -289,6 +290,9 @@ struct rxe_qp {
> >       spinlock_t              state_lock; /* guard requester and completer */
> >
> >       struct execute_work     cleanup_work;
> > +
> > +     /* Must be last as it ends in a flexible-array member. */
> > +     struct rxe_resp_info    resp;
> >   };
> >
> >   enum {
>
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23 16:38   ` Greg Sword
@ 2025-12-23 16:59     ` Gustavo A. R. Silva
  2025-12-23 17:19       ` Greg Sword
  0 siblings, 1 reply; 20+ messages in thread
From: Gustavo A. R. Silva @ 2025-12-23 16:59 UTC (permalink / raw)
  To: Greg Sword
  Cc: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel,
	Gustavo A. R. Silva



On 12/24/25 01:38, Greg Sword wrote:
> On Tue, Dec 23, 2025 at 5:35 PM Gustavo A. R. Silva
> <gustavo@embeddedor.com> wrote:
>>
>>
>>
>> On 12/23/25 13:41, Zhu Yanjun wrote:
>>> From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
>>>
>>> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
>>> getting ready to enable it, globally.
>>>
>>> Use the new TRAILING_OVERLAP() helper to fix the following warning:
>>>
>>> 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
>>>
>>> This helper creates a union between a flexible-array member (FAM) and a
>>> set of MEMBERS that would otherwise follow it.
>>>
>>> This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
>>> the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
>>> start of MEMBER aligned.
>>>
>>> The static_assert() ensures this alignment remains, and it's
>>> intentionally placed inmediately after the related structure --no
>>> blank line in between.
>>>
>>> Lastly, move the conflicting declaration struct rxe_resp_info resp;
>>> to the end of the corresponding structure.
>>>
>>> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
>>> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
>>
>> NACK.
> 
> Just a small reminder about community conventions: reviewers can NACK
> a patch, but authors generally should not NACK their own patches.

It's obvious that you don't understand what's going on here.

>> I didn't write this patch.

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This line should've given you a clue.

-Gustavo

>>
>> Please, don't ever submit modified patches on my behalf.
>>
>>> ---
>>> V2->V3: Replace struct ib_sge with struct rxe_sge
>>
>> Patch granularity is a fundamental thing. Changes addressing different
>> issues should not be mixed together. Previously existing issues (if any)
>> must be addressed in separate patches.
>>
>> -Gustavo
>>
>>> ---
>>>    drivers/infiniband/sw/rxe/rxe_verbs.h | 18 +++++++++++-------
>>>    1 file changed, 11 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
>>> index fd48075810dd..3ffd7be8e7b1 100644
>>> --- a/drivers/infiniband/sw/rxe/rxe_verbs.h
>>> +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h
>>> @@ -219,12 +219,6 @@ struct rxe_resp_info {
>>>        u32                     rkey;
>>>        u32                     length;
>>>
>>> -     /* SRQ only */
>>> -     struct {
>>> -             struct rxe_recv_wqe     wqe;
>>> -             struct ib_sge           sge[RXE_MAX_SGE];
>>> -     } srq_wqe;
>>> -
>>>        /* Responder resources. It's a circular list where the oldest
>>>         * resource is dropped first.
>>>         */
>>> @@ -232,7 +226,15 @@ struct rxe_resp_info {
>>>        unsigned int            res_head;
>>>        unsigned int            res_tail;
>>>        struct resp_res         *res;
>>> +
>>> +     /* SRQ only */
>>> +     /* Must be last as it ends in a flexible-array member. */
>>> +     TRAILING_OVERLAP(struct rxe_recv_wqe, wqe, dma.sge,
>>> +             struct rxe_sge          sge[RXE_MAX_SGE];
>>> +     ) srq_wqe;
>>>    };
>>> +static_assert(offsetof(struct rxe_resp_info, srq_wqe.wqe.dma.sge) ==
>>> +           offsetof(struct rxe_resp_info, srq_wqe.sge));
>>>
>>>    struct rxe_qp {
>>>        struct ib_qp            ibqp;
>>> @@ -269,7 +271,6 @@ struct rxe_qp {
>>>
>>>        struct rxe_req_info     req;
>>>        struct rxe_comp_info    comp;
>>> -     struct rxe_resp_info    resp;
>>>
>>>        atomic_t                ssn;
>>>        atomic_t                skb_out;
>>> @@ -289,6 +290,9 @@ struct rxe_qp {
>>>        spinlock_t              state_lock; /* guard requester and completer */
>>>
>>>        struct execute_work     cleanup_work;
>>> +
>>> +     /* Must be last as it ends in a flexible-array member. */
>>> +     struct rxe_resp_info    resp;
>>>    };
>>>
>>>    enum {
>>
>>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23 16:59     ` Gustavo A. R. Silva
@ 2025-12-23 17:19       ` Greg Sword
  2025-12-23 17:26         ` Gustavo A. R. Silva
  0 siblings, 1 reply; 20+ messages in thread
From: Greg Sword @ 2025-12-23 17:19 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel,
	Gustavo A. R. Silva

On Wed, Dec 24, 2025 at 12:59 AM Gustavo A. R. Silva
<gustavo@embeddedor.com> wrote:
>
>
>
> On 12/24/25 01:38, Greg Sword wrote:
> > On Tue, Dec 23, 2025 at 5:35 PM Gustavo A. R. Silva
> > <gustavo@embeddedor.com> wrote:
> >>
> >>
> >>
> >> On 12/23/25 13:41, Zhu Yanjun wrote:
> >>> From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
> >>>
> >>> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
> >>> getting ready to enable it, globally.
> >>>
> >>> Use the new TRAILING_OVERLAP() helper to fix the following warning:
> >>>
> >>> 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> >>>
> >>> This helper creates a union between a flexible-array member (FAM) and a
> >>> set of MEMBERS that would otherwise follow it.
> >>>
> >>> This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
> >>> the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
> >>> start of MEMBER aligned.
> >>>
> >>> The static_assert() ensures this alignment remains, and it's
> >>> intentionally placed inmediately after the related structure --no
> >>> blank line in between.
> >>>
> >>> Lastly, move the conflicting declaration struct rxe_resp_info resp;
> >>> to the end of the corresponding structure.
> >>>
> >>> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> >>> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
> >>
> >> NACK.
> >
> > Just a small reminder about community conventions: reviewers can NACK
> > a patch, but authors generally should not NACK their own patches.
>
> It's obvious that you don't understand what's going on here.

I’ve read through the full discussion and understand how this evolved.
Based on that, I believe there may be a misunderstanding on your side.

>
> >> I didn't write this patch.
>
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> This line should've given you a clue.
>
> -Gustavo
>
> >>
> >> Please, don't ever submit modified patches on my behalf.
> >>
> >>> ---
> >>> V2->V3: Replace struct ib_sge with struct rxe_sge
> >>
> >> Patch granularity is a fundamental thing. Changes addressing different
> >> issues should not be mixed together. Previously existing issues (if any)
> >> must be addressed in separate patches.
> >>
> >> -Gustavo
> >>
> >>> ---
> >>>    drivers/infiniband/sw/rxe/rxe_verbs.h | 18 +++++++++++-------
> >>>    1 file changed, 11 insertions(+), 7 deletions(-)
> >>>
> >>> diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
> >>> index fd48075810dd..3ffd7be8e7b1 100644
> >>> --- a/drivers/infiniband/sw/rxe/rxe_verbs.h
> >>> +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h
> >>> @@ -219,12 +219,6 @@ struct rxe_resp_info {
> >>>        u32                     rkey;
> >>>        u32                     length;
> >>>
> >>> -     /* SRQ only */
> >>> -     struct {
> >>> -             struct rxe_recv_wqe     wqe;
> >>> -             struct ib_sge           sge[RXE_MAX_SGE];
> >>> -     } srq_wqe;
> >>> -
> >>>        /* Responder resources. It's a circular list where the oldest
> >>>         * resource is dropped first.
> >>>         */
> >>> @@ -232,7 +226,15 @@ struct rxe_resp_info {
> >>>        unsigned int            res_head;
> >>>        unsigned int            res_tail;
> >>>        struct resp_res         *res;
> >>> +
> >>> +     /* SRQ only */
> >>> +     /* Must be last as it ends in a flexible-array member. */
> >>> +     TRAILING_OVERLAP(struct rxe_recv_wqe, wqe, dma.sge,
> >>> +             struct rxe_sge          sge[RXE_MAX_SGE];
> >>> +     ) srq_wqe;
> >>>    };
> >>> +static_assert(offsetof(struct rxe_resp_info, srq_wqe.wqe.dma.sge) ==
> >>> +           offsetof(struct rxe_resp_info, srq_wqe.sge));
> >>>
> >>>    struct rxe_qp {
> >>>        struct ib_qp            ibqp;
> >>> @@ -269,7 +271,6 @@ struct rxe_qp {
> >>>
> >>>        struct rxe_req_info     req;
> >>>        struct rxe_comp_info    comp;
> >>> -     struct rxe_resp_info    resp;
> >>>
> >>>        atomic_t                ssn;
> >>>        atomic_t                skb_out;
> >>> @@ -289,6 +290,9 @@ struct rxe_qp {
> >>>        spinlock_t              state_lock; /* guard requester and completer */
> >>>
> >>>        struct execute_work     cleanup_work;
> >>> +
> >>> +     /* Must be last as it ends in a flexible-array member. */
> >>> +     struct rxe_resp_info    resp;
> >>>    };
> >>>
> >>>    enum {
> >>
> >>
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23 17:19       ` Greg Sword
@ 2025-12-23 17:26         ` Gustavo A. R. Silva
  2025-12-24  6:51           ` Leon Romanovsky
  0 siblings, 1 reply; 20+ messages in thread
From: Gustavo A. R. Silva @ 2025-12-23 17:26 UTC (permalink / raw)
  To: Greg Sword
  Cc: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel,
	Gustavo A. R. Silva



On 12/24/25 02:19, Greg Sword wrote:
> On Wed, Dec 24, 2025 at 12:59 AM Gustavo A. R. Silva
> <gustavo@embeddedor.com> wrote:
>>
>>
>>
>> On 12/24/25 01:38, Greg Sword wrote:
>>> On Tue, Dec 23, 2025 at 5:35 PM Gustavo A. R. Silva
>>> <gustavo@embeddedor.com> wrote:
>>>>
>>>>
>>>>
>>>> On 12/23/25 13:41, Zhu Yanjun wrote:
>>>>> From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
>>>>>
>>>>> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
>>>>> getting ready to enable it, globally.
>>>>>
>>>>> Use the new TRAILING_OVERLAP() helper to fix the following warning:
>>>>>
>>>>> 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
>>>>>
>>>>> This helper creates a union between a flexible-array member (FAM) and a
>>>>> set of MEMBERS that would otherwise follow it.
>>>>>
>>>>> This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
>>>>> the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
>>>>> start of MEMBER aligned.
>>>>>
>>>>> The static_assert() ensures this alignment remains, and it's
>>>>> intentionally placed inmediately after the related structure --no
>>>>> blank line in between.
>>>>>
>>>>> Lastly, move the conflicting declaration struct rxe_resp_info resp;
>>>>> to the end of the corresponding structure.
>>>>>
>>>>> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
>>>>> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
>>>>
>>>> NACK.
>>>
>>> Just a small reminder about community conventions: reviewers can NACK
>>> a patch, but authors generally should not NACK their own patches.
>>
>> It's obvious that you don't understand what's going on here.
> 
> I’ve read through the full discussion and understand how this evolved.
> Based on that, I believe there may be a misunderstanding on your side.

Okay, thanks for your contribution then.

-Gustavo

> 
>>
>>>> I didn't write this patch.
>>
>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> This line should've given you a clue.
>>
>> -Gustavo
>>
>>>>
>>>> Please, don't ever submit modified patches on my behalf.
>>>>
>>>>> ---
>>>>> V2->V3: Replace struct ib_sge with struct rxe_sge
>>>>
>>>> Patch granularity is a fundamental thing. Changes addressing different
>>>> issues should not be mixed together. Previously existing issues (if any)
>>>> must be addressed in separate patches.
>>>>
>>>> -Gustavo
>>>>
>>>>> ---
>>>>>     drivers/infiniband/sw/rxe/rxe_verbs.h | 18 +++++++++++-------
>>>>>     1 file changed, 11 insertions(+), 7 deletions(-)
>>>>>
>>>>> diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
>>>>> index fd48075810dd..3ffd7be8e7b1 100644
>>>>> --- a/drivers/infiniband/sw/rxe/rxe_verbs.h
>>>>> +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h
>>>>> @@ -219,12 +219,6 @@ struct rxe_resp_info {
>>>>>         u32                     rkey;
>>>>>         u32                     length;
>>>>>
>>>>> -     /* SRQ only */
>>>>> -     struct {
>>>>> -             struct rxe_recv_wqe     wqe;
>>>>> -             struct ib_sge           sge[RXE_MAX_SGE];
>>>>> -     } srq_wqe;
>>>>> -
>>>>>         /* Responder resources. It's a circular list where the oldest
>>>>>          * resource is dropped first.
>>>>>          */
>>>>> @@ -232,7 +226,15 @@ struct rxe_resp_info {
>>>>>         unsigned int            res_head;
>>>>>         unsigned int            res_tail;
>>>>>         struct resp_res         *res;
>>>>> +
>>>>> +     /* SRQ only */
>>>>> +     /* Must be last as it ends in a flexible-array member. */
>>>>> +     TRAILING_OVERLAP(struct rxe_recv_wqe, wqe, dma.sge,
>>>>> +             struct rxe_sge          sge[RXE_MAX_SGE];
>>>>> +     ) srq_wqe;
>>>>>     };
>>>>> +static_assert(offsetof(struct rxe_resp_info, srq_wqe.wqe.dma.sge) ==
>>>>> +           offsetof(struct rxe_resp_info, srq_wqe.sge));
>>>>>
>>>>>     struct rxe_qp {
>>>>>         struct ib_qp            ibqp;
>>>>> @@ -269,7 +271,6 @@ struct rxe_qp {
>>>>>
>>>>>         struct rxe_req_info     req;
>>>>>         struct rxe_comp_info    comp;
>>>>> -     struct rxe_resp_info    resp;
>>>>>
>>>>>         atomic_t                ssn;
>>>>>         atomic_t                skb_out;
>>>>> @@ -289,6 +290,9 @@ struct rxe_qp {
>>>>>         spinlock_t              state_lock; /* guard requester and completer */
>>>>>
>>>>>         struct execute_work     cleanup_work;
>>>>> +
>>>>> +     /* Must be last as it ends in a flexible-array member. */
>>>>> +     struct rxe_resp_info    resp;
>>>>>     };
>>>>>
>>>>>     enum {
>>>>
>>>>
>>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-23 17:26         ` Gustavo A. R. Silva
@ 2025-12-24  6:51           ` Leon Romanovsky
  2025-12-24  8:32             ` Gustavo A. R. Silva
  0 siblings, 1 reply; 20+ messages in thread
From: Leon Romanovsky @ 2025-12-24  6:51 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: Greg Sword, Zhu Yanjun, zyjzyj2000, jgg, linux-rdma, linux-kernel,
	Gustavo A. R. Silva

On Wed, Dec 24, 2025 at 02:26:22AM +0900, Gustavo A. R. Silva wrote:
> 
> 
> On 12/24/25 02:19, Greg Sword wrote:
> > On Wed, Dec 24, 2025 at 12:59 AM Gustavo A. R. Silva
> > <gustavo@embeddedor.com> wrote:
> > > 
> > > 
> > > 
> > > On 12/24/25 01:38, Greg Sword wrote:
> > > > On Tue, Dec 23, 2025 at 5:35 PM Gustavo A. R. Silva
> > > > <gustavo@embeddedor.com> wrote:
> > > > > 
> > > > > 
> > > > > 
> > > > > On 12/23/25 13:41, Zhu Yanjun wrote:
> > > > > > From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
> > > > > > 
> > > > > > -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
> > > > > > getting ready to enable it, globally.
> > > > > > 
> > > > > > Use the new TRAILING_OVERLAP() helper to fix the following warning:
> > > > > > 
> > > > > > 21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> > > > > > 
> > > > > > This helper creates a union between a flexible-array member (FAM) and a
> > > > > > set of MEMBERS that would otherwise follow it.
> > > > > > 
> > > > > > This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
> > > > > > the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
> > > > > > start of MEMBER aligned.
> > > > > > 
> > > > > > The static_assert() ensures this alignment remains, and it's
> > > > > > intentionally placed inmediately after the related structure --no
> > > > > > blank line in between.
> > > > > > 
> > > > > > Lastly, move the conflicting declaration struct rxe_resp_info resp;
> > > > > > to the end of the corresponding structure.
> > > > > > 
> > > > > > Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> > > > > > Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
> > > > > 
> > > > > NACK.
> > > > 
> > > > Just a small reminder about community conventions: reviewers can NACK
> > > > a patch, but authors generally should not NACK their own patches.
> > > 
> > > It's obvious that you don't understand what's going on here.
> > 
> > I’ve read through the full discussion and understand how this evolved.
> > Based on that, I believe there may be a misunderstanding on your side.
> 
> Okay, thanks for your contribution then.

Gustavo,

A more fundamental issue than patch granularity is simply treating others
with respect, even when you disagree with them.

Zhu cares about RXE, and he respected your work by trying to address your
problem, not his own. RXE functions correctly without your patch, and this
hardening effort does not apply to RXE at all.

So please remember that both of you want the same thing, and let's keep the
discussion focused on the technical issues.

Thanks

> 
> -Gustavo
> 
> > 
> > > 
> > > > > I didn't write this patch.
> > > 
> > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > > This line should've given you a clue.
> > > 
> > > -Gustavo
> > > 
> > > > > 
> > > > > Please, don't ever submit modified patches on my behalf.
> > > > > 
> > > > > > ---
> > > > > > V2->V3: Replace struct ib_sge with struct rxe_sge
> > > > > 
> > > > > Patch granularity is a fundamental thing. Changes addressing different
> > > > > issues should not be mixed together. Previously existing issues (if any)
> > > > > must be addressed in separate patches.
> > > > > 
> > > > > -Gustavo
> > > > > 
> > > > > > ---
> > > > > >     drivers/infiniband/sw/rxe/rxe_verbs.h | 18 +++++++++++-------
> > > > > >     1 file changed, 11 insertions(+), 7 deletions(-)
> > > > > > 
> > > > > > diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
> > > > > > index fd48075810dd..3ffd7be8e7b1 100644
> > > > > > --- a/drivers/infiniband/sw/rxe/rxe_verbs.h
> > > > > > +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h
> > > > > > @@ -219,12 +219,6 @@ struct rxe_resp_info {
> > > > > >         u32                     rkey;
> > > > > >         u32                     length;
> > > > > > 
> > > > > > -     /* SRQ only */
> > > > > > -     struct {
> > > > > > -             struct rxe_recv_wqe     wqe;
> > > > > > -             struct ib_sge           sge[RXE_MAX_SGE];
> > > > > > -     } srq_wqe;
> > > > > > -
> > > > > >         /* Responder resources. It's a circular list where the oldest
> > > > > >          * resource is dropped first.
> > > > > >          */
> > > > > > @@ -232,7 +226,15 @@ struct rxe_resp_info {
> > > > > >         unsigned int            res_head;
> > > > > >         unsigned int            res_tail;
> > > > > >         struct resp_res         *res;
> > > > > > +
> > > > > > +     /* SRQ only */
> > > > > > +     /* Must be last as it ends in a flexible-array member. */
> > > > > > +     TRAILING_OVERLAP(struct rxe_recv_wqe, wqe, dma.sge,
> > > > > > +             struct rxe_sge          sge[RXE_MAX_SGE];
> > > > > > +     ) srq_wqe;
> > > > > >     };
> > > > > > +static_assert(offsetof(struct rxe_resp_info, srq_wqe.wqe.dma.sge) ==
> > > > > > +           offsetof(struct rxe_resp_info, srq_wqe.sge));
> > > > > > 
> > > > > >     struct rxe_qp {
> > > > > >         struct ib_qp            ibqp;
> > > > > > @@ -269,7 +271,6 @@ struct rxe_qp {
> > > > > > 
> > > > > >         struct rxe_req_info     req;
> > > > > >         struct rxe_comp_info    comp;
> > > > > > -     struct rxe_resp_info    resp;
> > > > > > 
> > > > > >         atomic_t                ssn;
> > > > > >         atomic_t                skb_out;
> > > > > > @@ -289,6 +290,9 @@ struct rxe_qp {
> > > > > >         spinlock_t              state_lock; /* guard requester and completer */
> > > > > > 
> > > > > >         struct execute_work     cleanup_work;
> > > > > > +
> > > > > > +     /* Must be last as it ends in a flexible-array member. */
> > > > > > +     struct rxe_resp_info    resp;
> > > > > >     };
> > > > > > 
> > > > > >     enum {
> > > > > 
> > > > > 
> > > 
> 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
  2025-12-24  6:51           ` Leon Romanovsky
@ 2025-12-24  8:32             ` Gustavo A. R. Silva
  0 siblings, 0 replies; 20+ messages in thread
From: Gustavo A. R. Silva @ 2025-12-24  8:32 UTC (permalink / raw)
  To: Leon Romanovsky
  Cc: Greg Sword, Zhu Yanjun, zyjzyj2000, jgg, linux-rdma, linux-kernel,
	Gustavo A. R. Silva

> So please remember that both of you want the same thing, and let's keep the
> discussion focused on the technical issues.

Absolutely, we all care about the same and, to me, this[1] really marked
the end of this thread. So, thanks for your intervention, and thanks
Zhu for addressing that issue.

On my side, I'm off the rest of the year. Enjoy some time away from the
keyboard everyone, and happy holidays to those who have the chance.

-Gustavo

[1] https://lore.kernel.org/linux-rdma/20251223142055.GC11869@unreal/

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2025-12-24  8:33 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-23  4:41 [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings Zhu Yanjun
2025-12-23  5:03 ` Gustavo A. R. Silva
2025-12-23  5:10   ` Zhu Yanjun
2025-12-23  5:18     ` Gustavo A. R. Silva
2025-12-23  5:26       ` Zhu Yanjun
2025-12-23  5:34         ` Gustavo A. R. Silva
2025-12-23  5:44           ` Zhu Yanjun
2025-12-23  5:54             ` Gustavo A. R. Silva
2025-12-23  6:46               ` Zhu Yanjun
2025-12-23  9:28                 ` Gustavo A. R. Silva
2025-12-23 16:02                   ` Zhu Yanjun
2025-12-23 14:20     ` Leon Romanovsky
2025-12-23 16:13       ` Zhu Yanjun
2025-12-23  9:34 ` Gustavo A. R. Silva
2025-12-23 16:38   ` Greg Sword
2025-12-23 16:59     ` Gustavo A. R. Silva
2025-12-23 17:19       ` Greg Sword
2025-12-23 17:26         ` Gustavo A. R. Silva
2025-12-24  6:51           ` Leon Romanovsky
2025-12-24  8:32             ` Gustavo A. R. Silva

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox