public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Zhu Yanjun <yanjun.zhu@linux.dev>
To: "Gustavo A. R. Silva" <gustavo@embeddedor.com>,
	Leon Romanovsky <leon@kernel.org>
Cc: Jason Gunthorpe <jgg@nvidia.com>,
	"Gustavo A. R. Silva" <gustavoars@kernel.org>,
	Zhu Yanjun <zyjzyj2000@gmail.com>,
	linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-hardening@vger.kernel.org
Subject: Re: [PATCH][next] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
Date: Thu, 18 Dec 2025 21:27:30 -0800	[thread overview]
Message-ID: <01b419f6-264e-4faa-b4df-480fdf952d14@linux.dev> (raw)
In-Reply-To: <d569b5fd-fcca-4dd0-b94b-a6df4e52d940@embeddedor.com>

在 2025/12/18 20:35, Gustavo A. R. Silva 写道:
> 
> 
> On 12/19/25 13:29, Zhu Yanjun wrote:
>>
>> 在 2025/12/18 18:51, Gustavo A. R. Silva 写道:
>>>
>>>
>>> On 12/19/25 04:22, Yanjun.Zhu wrote:
>>>>
>>>> On 12/18/25 7:56 AM, Leon Romanovsky wrote:
>>>>> On Sun, Dec 14, 2025 at 09:00:51PM -0800, Zhu Yanjun wrote:
>>>>>>
>>>>>> 在 2025/12/5 20:41, Zhu Yanjun 写道:
>>>>>>>
>>>>>>> 在 2025/12/4 9:48, yanjun.zhu 写道:
>>>>>>>> On 12/4/25 5:05 AM, Jason Gunthorpe wrote:
>>>>>>>>> On Wed, Dec 03, 2025 at 09:08:45PM -0800, Zhu Yanjun wrote:
>>>>>>>>>>>         unsigned int res_head;
>>>>>>>>>>>         unsigned int        res_tail;
>>>>>>>>>>>         struct resp_res        *res;
>>>>>>>>>>> +
>>>>>>>>>>> +    /* SRQ only. srq_wqe.dma.sge is a flex array */
>>>>>>>>>>> +    struct rxe_recv_wqe srq_wqe;
>>>>>>>>>> drivers/infiniband/sw/rxe/rxe_resp.c: In function get_srq_wqe:
>>>>>>>>>> drivers/infiniband/sw/rxe/rxe_resp.c:289:41: error: struct
>>>>>>>>>> rxe_recv_wqe has
>>>>>>>>>> no member named wqe
>>>>>>>>>>     289 |         qp->resp.wqe = &qp->resp.srq_wqe.wqe;
>>>>>>>>>>         |                                         ^
>>>>>>>>> I didn't try to fix all the typos, you will need to do that.
>>>>>>>> Exactly. I will fix this problem. This weekend, I will send out an
>>>>>>>> official commit.
>>>>>>> Hi, Jason
>>>>>>>
>>>>>>> The followings are based on your commits and Leon's commits. And 
>>>>>>> it can
>>>>>>> pass the rdma-core tests.
>>>>>>>
>>>>>>> I am not sure if this commit is good or not.
>>>>>> Hi, Jason && Leon
>>>>>>
>>>>>> Any update? If this looks good to you, I will send out an official 
>>>>>> commit
>>>>>> based on the following commit.
>>>>> You are RXE maintainer, send the official patch.
>>>>
>>>> Will do. I will send it out very soon.
>>>
>>> I don't see how this addresses the flex-array in the middle issue that
>>> originated this discussion.
>>
>> Could you please explain this in more detail?
>> Also, if you have a better approach, would you mind sending a new 
>> commit for discussion?
> 
> This is exactly what my original patch is about. I've explained this a 
> couple of times
> in this thread already.

In your original patch, I have the following problem. I read all your 
replies.  But I can not find your answers to my problem.

My problem is as below:

1. The followings are the declaration of __TRAILING_OVERLAP

/**
  * __TRAILING_OVERLAP() - Overlap a flexible-array member with trailing
  *            members.
  *
  * Creates a union between a flexible-array member (FAM) in a struct 
and a set
  * of additional members that would otherwise follow it.
  *
  * @TYPE: Flexible structure type name, including "struct" keyword.
  * @NAME: Name for a variable to define.
  * @FAM: The flexible-array member within @TYPE          <----- Here
  * @ATTRS: Any struct attributes (usually empty)
  * @MEMBERS: Trailing overlapping members.
  */
#define __TRAILING_OVERLAP(TYPE, NAME, FAM, ATTRS, MEMBERS)         \
     union {                                 \
         TYPE NAME;                          \
         struct {                            \
             unsigned char __offset_to_FAM[offsetof(TYPE, FAM)]; \
             MEMBERS                         \
         } ATTRS;                            \
     }

2. I expanded the above MACRO __TRAILING_OVERLAP into the following 
following the definition in your commit.

union {

         struct rxe_recv_wqe wqe;

         struct {
             unsigned char __offset_to_FAM[offsetof(struct rxe_recv_wqe, 
dma.sge)]; \
             struct ib_sge sge[RXE_MAX_SGE];
         } ;

     }srq_wqe;

3. In your original commit, dma.sge should be the member of struct 
rxe_recv_wqe. The struct rxe_recv_wqe is as below.


"@FAM: The flexible-array member within @TYPE"


The struct rxe_recv_wqe is as below.

struct rxe_recv_wqe {
     __aligned_u64       wr_id;
     __u32           reserved;
     __u32           padding;
     struct rxe_dma_info dma;
};

But I can not find dma.sge in the above struct. Can you explain it?

To be honest, I read your original commit for several times, but I can 
not get it.  Can you explain the MACRO TRAILING_OVERLAP? And how can it 
replace the following struct?

struct {
       struct rxe_recv_wqe    wqe;
       struct ib_sge        sge[RXE_MAX_SGE];
} srq_wqe;

Thanks a lot.

Yanjun.Zhu

> 
> -Gustavo


  reply	other threads:[~2025-12-19  5:27 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-11  3:35 [PATCH][next] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings Gustavo A. R. Silva
2025-11-11 11:56 ` Leon Romanovsky
2025-11-11 12:14   ` Gustavo A. R. Silva
2025-11-11 14:19     ` Leon Romanovsky
2025-11-11 15:37       ` Zhu Yanjun
2025-11-12  8:49       ` Gustavo A. R. Silva
2025-11-12  9:32         ` Leon Romanovsky
2025-11-12  9:50           ` Gustavo A. R. Silva
2025-11-12 12:06             ` Leon Romanovsky
2025-12-02 18:13 ` Jason Gunthorpe
2025-12-03  7:32   ` Zhu Yanjun
2025-12-04  5:08   ` Zhu Yanjun
2025-12-04 13:05     ` Jason Gunthorpe
2025-12-04 17:48       ` yanjun.zhu
2025-12-06  4:41         ` Zhu Yanjun
2025-12-15  5:00           ` Zhu Yanjun
2025-12-18 15:56             ` Leon Romanovsky
2025-12-18 19:22               ` Yanjun.Zhu
2025-12-19  2:51                 ` Gustavo A. R. Silva
2025-12-19  4:29                   ` Zhu Yanjun
2025-12-19  4:35                     ` Gustavo A. R. Silva
2025-12-19  5:27                       ` Zhu Yanjun [this message]
2025-12-19  5:48                         ` Gustavo A. R. Silva
2025-12-19  6:59                           ` Zhu Yanjun
2025-12-19  9:55                             ` Gustavo A. R. Silva
2025-12-20  7:07                               ` Zhu Yanjun
2025-12-19 14:26                   ` Jason Gunthorpe
2025-12-26  6:13                     ` Zhu Yanjun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=01b419f6-264e-4faa-b4df-480fdf952d14@linux.dev \
    --to=yanjun.zhu@linux.dev \
    --cc=gustavo@embeddedor.com \
    --cc=gustavoars@kernel.org \
    --cc=jgg@nvidia.com \
    --cc=leon@kernel.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=zyjzyj2000@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox