From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from omta40.uswest2.a.cloudfilter.net (omta40.uswest2.a.cloudfilter.net [35.89.44.39]) (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 A08B1343204 for ; Tue, 23 Dec 2025 16:59:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=35.89.44.39 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766509197; cv=none; b=Pv304wEOupnE8r6RrMOkWZJp445VVC5n1Cn1a6o3MOufZinZ+ZoadezVy2AUkd27tNiRFMGihKVR9w/gWau+SnmI6WBnWNsvtUPl5aW3NLUxo+SI6LSek3GuBvre8XNwcrMS7Ks6MAfQMUGsUFuQ9LiyzL6FLeZk3DceCJk9xu4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766509197; c=relaxed/simple; bh=o1UZpnPS6R1DhAIr/HlJDAQSPi1igGzkK7LeLjIilj0=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=PpS39h1MtCqJthTvQvYH1qFJrcWaPLQyd8xqrQGJyantWjXwJqOmoZjHjuJX5N7Tbf0FegLDdCojMjiGfCurZNFPQi+omUc1So3NFh/6mQP7uaOizQAU6RVPGTEobnWj8IQCiS1mz+3WPb+pQNzAE4EL4SbNm4s4Xe71P814ueg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=embeddedor.com; spf=pass smtp.mailfrom=embeddedor.com; dkim=pass (2048-bit key) header.d=embeddedor.com header.i=@embeddedor.com header.b=DTWVInBQ; arc=none smtp.client-ip=35.89.44.39 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=embeddedor.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=embeddedor.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=embeddedor.com header.i=@embeddedor.com header.b="DTWVInBQ" Received: from eig-obgw-6007b.ext.cloudfilter.net ([10.0.30.166]) by cmsmtp with ESMTPS id Y3tJvWmKGaPqLY5jnvIla0; Tue, 23 Dec 2025 16:59:55 +0000 Received: from gator4166.hostgator.com ([108.167.133.22]) by cmsmtp with ESMTPS id Y5jmvqz4wh8QWY5jmvDNUR; Tue, 23 Dec 2025 16:59:54 +0000 X-Authority-Analysis: v=2.4 cv=Mcdsu4/f c=1 sm=1 tr=0 ts=694aca8a a=1YbLdUo/zbTtOZ3uB5T3HA==:117 a=ujWNxKVE5dX343uAl30YYw==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=7T7KSl7uo7wA:10 a=_Wotqz80AAAA:8 a=VwQbUJbxAAAA:8 a=NJJo_CaptpDDslnK3n4A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=buJP51TR1BpY-zbLSsyS:22 a=2aFnImwKRvkU0tJ3nQRT:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=embeddedor.com; s=default; h=Content-Transfer-Encoding:Content-Type: In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=F54GxWT0Sy/Q+7GUkWlvgrcPqPBRxDpV9uMrcUaFkrg=; b=DTWVInBQQW5dBGIdndXavDJmCu uWsLoklFQqD3S0HeeBJLLBNUBghW4X4WMNazB5EyX207uTu8VVT0yqqny1X88yO8B3uAXfGIrPVhc lQs4rgJp1F7vfeHnVgTG/PRpVHxl3a8IRtlaA0mDTvLvznFSLUKUTqzs+Yh2lqWmdj7YsKrv19gy9 o0Q8V3xUijUozApl6uN+xsu5Y+jkVMJ8Q9dHSPkuOLb1+5teqLCHyiggzx0mJMG+ShAoucJh6I5Wy r0kr0zf6R5IblV9i0mGjJThDSEm6dRUa8MtNoeU1XVpIrUh+WDW5DA/XQeLCjUL7EwYbDlAIhT27r hxwg9x2g==; Received: from i118-18-233-1.s41.a027.ap.plala.or.jp ([118.18.233.1]:62925 helo=[10.83.24.44]) by gator4166.hostgator.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.1) (envelope-from ) id 1vY5jl-00000001wuF-2Jmk; Tue, 23 Dec 2025 10:59:53 -0600 Message-ID: Date: Wed, 24 Dec 2025 01:59:39 +0900 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 1/1] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings To: Greg Sword Cc: Zhu Yanjun , zyjzyj2000@gmail.com, jgg@ziepe.ca, leon@kernel.org, linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org, "Gustavo A. R. Silva" References: <20251223044129.6232-1-yanjun.zhu@linux.dev> Content-Language: en-US From: "Gustavo A. R. Silva" In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator4166.hostgator.com X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - embeddedor.com X-BWhitelist: no X-Source-IP: 118.18.233.1 X-Source-L: No X-Exim-ID: 1vY5jl-00000001wuF-2Jmk X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: i118-18-233-1.s41.a027.ap.plala.or.jp ([10.83.24.44]) [118.18.233.1]:62925 X-Source-Auth: gustavo@embeddedor.com X-Email-Count: 2 X-Org: HG=hgshared;ORG=hostgator; X-Source-Cap: Z3V6aWRpbmU7Z3V6aWRpbmU7Z2F0b3I0MTY2Lmhvc3RnYXRvci5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfOuFLHSwFC1B8n0gRLYsrnD/YzP7YraKbizQvQAML9E1SgqF+RPR0b5akO+KybjJuWC4SQL9XiPoVdzHUh+h/Vxu27Mmf4MDzwAZfTvacvJrhLLB35Qv 3ddBPxi5IzkSGMdkuQSg2OyqGtbaAAmVv9sTcsYOz90sKsY1TjQ/mD9JAhGjP4d5LHE6GoYKw8I7CDfJX6w/PuLMdOj51auyO++6RmakOZjda9v82x/dMx8O On 12/24/25 01:38, Greg Sword wrote: > On Tue, Dec 23, 2025 at 5:35 PM Gustavo A. R. Silva > wrote: >> >> >> >> On 12/23/25 13:41, Zhu Yanjun wrote: >>> From: "Gustavo A. R. Silva" >>> >>> -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 >>> Signed-off-by: Gustavo A. R. Silva >> >> 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 { >> >>