From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out-178.mta1.migadu.com (out-178.mta1.migadu.com [95.215.58.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 57427286416 for ; Fri, 19 Dec 2025 05:27:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.178 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766122066; cv=none; b=H6HcwaSY1jkpPDcAdCnNxx0yM8gc9MnOSJUr5FbQkFERhm/Q9eFgkNKx5ah5uKu69Ai5q6hbMYiYrZzQz+Nm5kYFAmRD2Md4SpPrFIDzcZ8EtDYilZoZohmFJ5H28R0IuYMq3k7XpKafhjZNvvFl0lfy0Hbr4luU1bws06MUw+4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766122066; c=relaxed/simple; bh=ZLPOsN93mhLBgc1DlgFNEARefAxozdoq2IoqoUCcGNs=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=P1hbHQkf7MTeYACA54inpPTa/gPRgqq6xsyojpKxh17XR9fnqwdL+XlJC/4Bk9Bmn9pJ4qYaO/7Gdj2aKlpOib3DJDze8tqhs3FZ44G5JJ29DNEDlV1NJS5kB3XsjLyvzcoOc/mcaoxVvcTl/VLw5yLchLHkirvZ8ou8issc7NE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=szfgO3oO; arc=none smtp.client-ip=95.215.58.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="szfgO3oO" Message-ID: <01b419f6-264e-4faa-b4df-480fdf952d14@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1766122061; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TuAsbNg8IXs9RS2NAbeaLJ4hnHbfDFyeT7DH3dnGHR0=; b=szfgO3oOVzLCZiWDGJaoy/h6QDemWhZUqn+JYJOzQAIzVRlXlOW8kvEsQHZlkOzNf6eQSy gKbtTnSXhHAda/q6i73BVLnryj9Q241nndlMJ6wYI2670YvdpjMrhY75tK4lxAsig1Q1jz 1AFHUzdsFBoNjKxQopG16lVjegIhV2Y= Date: Thu, 18 Dec 2025 21:27:30 -0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Subject: Re: [PATCH][next] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings To: "Gustavo A. R. Silva" , Leon Romanovsky Cc: Jason Gunthorpe , "Gustavo A. R. Silva" , Zhu Yanjun , linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org References: <20251202181334.GA1162842@nvidia.com> <5ac954bb-ad4d-4b4c-b23b-47350b428404@linux.dev> <20251204130559.GA1219718@nvidia.com> <80620d09-8187-45b1-a490-07c52733ac21@linux.dev> <2191ee0f-a528-4187-ae5b-5aba18741701@linux.dev> <7e3a294f-5dc2-4e8c-aacc-0286c1592038@linux.dev> <20251218155623.GC400630@unreal> <5d950681-7f16-4b1e-a512-b118c747ffd7@linux.dev> <6f15e334-8902-4d1d-adab-aa9ab8f009d6@linux.dev> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Zhu Yanjun In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT 在 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