From: Zhu Yanjun <yanjun.zhu@linux.dev>
To: Jason Gunthorpe <jgg@nvidia.com>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
Zhu Yanjun <zyjzyj2000@gmail.com>
Cc: Leon Romanovsky <leon@kernel.org>,
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: Wed, 3 Dec 2025 21:08:45 -0800 [thread overview]
Message-ID: <5ac954bb-ad4d-4b4c-b23b-47350b428404@linux.dev> (raw)
In-Reply-To: <20251202181334.GA1162842@nvidia.com>
在 2025/12/2 10:13, Jason Gunthorpe 写道:
> On Tue, Nov 11, 2025 at 12:35:02PM +0900, Gustavo A. R. Silva wrote:
>> diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
>> index fd48075810dd..6498d61e8956 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;
>
> I think this existing is just a mess, can we fix it properly?
>
> What this code wants to do is to have rxe_resp_info allocate a
> rxe_recv_wqe and have a maximum size of its flex array pre-allocated.
>
> Probably like this, though maybe we need a FLEX version of the
> INIT_RDMA_OBJ_SIZE macro to make it safer.
>
> Zhu, this seems like a good thing for you to look at?
>
> diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
> index 38d8c408320f11..189eaa59a5fb14 100644
> --- a/drivers/infiniband/sw/rxe/rxe_verbs.c
> +++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
> @@ -1524,7 +1524,8 @@ static const struct ib_device_ops rxe_dev_ops = {
> INIT_RDMA_OBJ_SIZE(ib_ah, rxe_ah, ibah),
> INIT_RDMA_OBJ_SIZE(ib_cq, rxe_cq, ibcq),
> INIT_RDMA_OBJ_SIZE(ib_pd, rxe_pd, ibpd),
> - INIT_RDMA_OBJ_SIZE(ib_qp, rxe_qp, ibqp),
> + /* For resp.srq_wqe.dma.sge */
> + INIT_RDMA_OBJ_SIZE(ib_qp, rxe_qp, ibqp) + RXE_MAX_SGE*sizeof(struct ib_sge),
> INIT_RDMA_OBJ_SIZE(ib_srq, rxe_srq, ibsrq),
> INIT_RDMA_OBJ_SIZE(ib_ucontext, rxe_ucontext, ibuc),
> INIT_RDMA_OBJ_SIZE(ib_mw, rxe_mw, ibmw),
> diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
> index fd48075810dd10..dda741ec3ac701 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,6 +226,9 @@ struct rxe_resp_info {
> 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;
| ^
struct {
struct rxe_recv_wqe wqe;
struct ib_sge sge[RXE_MAX_SGE];
} srq_wqe;
IMO, it is better to move this struct to the end of the struct
rxe_resp_info.
Yanjun.Zhu
> };
>
> struct rxe_qp {
> @@ -269,7 +266,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 +285,7 @@ struct rxe_qp {
> spinlock_t state_lock; /* guard requester and completer */
>
> struct execute_work cleanup_work;
> + struct rxe_resp_info resp;
> };
>
> enum {
next prev parent reply other threads:[~2025-12-04 5:08 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 [this message]
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
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=5ac954bb-ad4d-4b4c-b23b-47350b428404@linux.dev \
--to=yanjun.zhu@linux.dev \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.