Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp6354587rwd; Mon, 19 Jun 2023 06:14:08 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6wx1gW3cAUl2iHoI1hmSuTe7nua0B5C1Ya1v2TBq8Gm/AoGecrrpNhAkGmKjFKuzZQYH6a X-Received: by 2002:a05:6a00:a94:b0:666:8403:9f4 with SMTP id b20-20020a056a000a9400b00666840309f4mr10398002pfl.16.1687180448495; Mon, 19 Jun 2023 06:14:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687180448; cv=none; d=google.com; s=arc-20160816; b=jm0UgxLi8wfAc6mhF89SbpvFcnrJFtKqPkku3jtFmWfVqyKEIY5a6JQRbkjeiG9K3v bFOP1rBNUs8jaRHAisrAOItZ5vEe99lqtuhHkYJssmBYP9zcKF0qWu7U8G+5r5yHTpZD 2xklYtyTt3B1gLHm6gnoYCzWE0MlLw9ys1M+n7qi38eXMCRe0q3PmjrJsVej+mqhnLKe 8eru+xXkhbrJ6eukz6pgAxwJRu7WtULXhf4vqHgewrQ6X606WbJnfbkzejLAFtVMS2Tb O1OsGx4Emv6qbSND+dIx+Or4aDc0HLSUweFyILtlAjY2nGL/WE5bXQqfGw8ims5ui+gs tjQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:subject:cc:to:from:date:references:in-reply-to :message-id:mime-version:user-agent:feedback-id:dkim-signature :dkim-signature; bh=lo98U6NNyBvPDxCtGn35zLY8FueG6iIEIBGk0drXwXE=; b=S0qJk9qcznefhXnH9UNoVlTRRSOk4xJQDn40cAn+eywUyuIlZJ3zpUy5eSwDiqrefz cbO/W/SKpSR0AwtcKuklkCvgTKMGYtKGNDvTo0akwIiExbmRQkNMaphph/qo3tznxsPK Uspown9HFGkdGexUXDuZ/RHA6Svz0GW2WonRSqLVAAHFTAe5RHNERivDkI7ImHfvVSaj kMidJElAMOCSOO54Fu877K1lPnBu6HhBCKUt79GKebCFLb0tNypSApRRie2WlHGoyo8S qiWfYV7cqxJikGUF3r2bhx9UXCSbVa3TPaHX3wVZWhUZZqw3bWlyfJ62NO5tpagyCSLM xZAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@arndb.de header.s=fm1 header.b=z8vAYqIk; dkim=pass header.i=@messagingengine.com header.s=fm2 header.b=ORVC3oKw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 207-20020a6301d8000000b00553cb20380bsi1583135pgb.33.2023.06.19.06.13.56; Mon, 19 Jun 2023 06:14:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@arndb.de header.s=fm1 header.b=z8vAYqIk; dkim=pass header.i=@messagingengine.com header.s=fm2 header.b=ORVC3oKw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231490AbjFSNEe (ORCPT + 99 others); Mon, 19 Jun 2023 09:04:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43970 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229848AbjFSNEd (ORCPT ); Mon, 19 Jun 2023 09:04:33 -0400 Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ECE7B91; Mon, 19 Jun 2023 06:04:31 -0700 (PDT) Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 67F665C024E; Mon, 19 Jun 2023 09:04:31 -0400 (EDT) Received: from imap51 ([10.202.2.101]) by compute6.internal (MEProxy); Mon, 19 Jun 2023 09:04:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arndb.de; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm1; t=1687179871; x=1687266271; bh=lo 98U6NNyBvPDxCtGn35zLY8FueG6iIEIBGk0drXwXE=; b=z8vAYqIkQbtDax2PKx L8LhGaTy1GhwxG9wqCIXcXXnQHbMUXWvd1Ky5DGeRTcPvxCcSkU/dX55TLC5u+98 n5iX7LtYlKFCVnAno9h33SkBL0bqf7V5MAqULGwNc25EEP3fE/N4v5dsNmannGCF E2X+qDPeLkzfy5WmEPJrQHi3Nu5xz8vDN1VhhG4ab6flmW9ZPRKTuuLlphsczOe1 BH6L9prVMoy2oJBGr4gl5LFV4ubcdG7F1W1f1WCOtsOXxWGLifmEq+a17giEkF1R Yo5a9JS99/MMRDNZhlrbm+qzhLk2DRCqkFP3t1dS4knzMX7Vdfh/vYe1KZBVXdFx Y4qw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm2; t=1687179871; x=1687266271; bh=lo98U6NNyBvPD xCtGn35zLY8FueG6iIEIBGk0drXwXE=; b=ORVC3oKwUHMuI6QEg2EiPCIznXzPj Wn4rKkey5xpwg/caTm6VFHnI5vlgmDiNKII0YPSFFontMxuwuCbHvD92bnYFjH/B OOjcpwil6c6LQHvn+aREPLlYkdSqgSfRp0xQgvUreH0kZQuvryQivGzEhQpM6/aU qydt4cSAhKKMqcESudu1LAUGff8jhVbDEM26vw+tsd0McXfMgyIFMO39GzC7rPEJ 8xu1AqQTmDCoPY1utIim9oDlDh42UJXrkwyeqrQBy7gvbXZOArQDY3qfw27Kme+i ejZUBxKglsYqyRn739fWW7JqQMZAFaYw+qJCA9IvahTe4yaAHuKaGp9jw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrgeefvddgheejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepofgfggfkjghffffhvfevufgtsehttdertderredtnecuhfhrohhmpedftehr nhguuceuvghrghhmrghnnhdfuceorghrnhgusegrrhhnuggsrdguvgeqnecuggftrfgrth htvghrnhepffehueegteeihfegtefhjefgtdeugfegjeelheejueethfefgeeghfektdek teffnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomheprg hrnhgusegrrhhnuggsrdguvg X-ME-Proxy: Feedback-ID: i56a14606:Fastmail Received: by mailuser.nyi.internal (Postfix, from userid 501) id C840CB60086; Mon, 19 Jun 2023 09:04:30 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.9.0-alpha0-496-g8c46984af0-fm-20230615.001-g8c46984a Mime-Version: 1.0 Message-Id: In-Reply-To: <7c448f02-4031-0a90-97e2-0cc663b0cff9@gmail.com> References: <20230619091215.2731541-1-arnd@kernel.org> <20230619091215.2731541-3-arnd@kernel.org> <7c448f02-4031-0a90-97e2-0cc663b0cff9@gmail.com> Date: Mon, 19 Jun 2023 15:04:10 +0200 From: "Arnd Bergmann" To: "Edward Cree" , "Arnd Bergmann" , "Martin Habets" , "David S . Miller" , "Eric Dumazet" , "Jakub Kicinski" , "Paolo Abeni" Cc: Netdev , linux-net-drivers@amd.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/3] sfc: selftest: fix struct packing Content-Type: text/plain X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jun 19, 2023, at 12:25, Edward Cree wrote: > On 19/06/2023 10:12, Arnd Bergmann wrote: >> From: Arnd Bergmann >> >> Three of the sfc drivers define a packed loopback_payload structure with an >> ethernet header followed by an IP header. However, the kernel definition >> of iphdr specifies that this is 4-byte aligned, causing a W=1 warning: >> >> net/ethernet/sfc/siena/selftest.c:46:15: error: field ip within 'struct efx_loopback_payload' is less aligned than 'struct iphdr' and is usually due to 'struct efx_loopback_payload' being packed, which can lead to unaligned accesses [-Werror,-Wunaligned-access] >> struct iphdr ip; >> >> As the iphdr packing is not easily changed without breaking other code, >> change the three structures to use a local definition instead. >> >> Signed-off-by: Arnd Bergmann > > Duplicating the definition isn't the prettiest thing in the world; it'd > do for a quick fix if needed but I assume W=1 warnings aren't blocking > anyone, so maybe defer this one for now and I'll follow up soon with a > rewrite that fixes this more cleanly? My idea is to drop the __packed > from the containing struct, make efx_begin_loopback() copy the layers > separately, and efx_loopback_rx_packet() similarly do something less > direct than casting the packet data to the struct. > > But I don't insist on it; if you want this fix in immediately then I'm > okay with that too. > >> --- >> drivers/net/ethernet/sfc/falcon/selftest.c | 21 ++++++++++++++++++++- >> drivers/net/ethernet/sfc/selftest.c | 21 ++++++++++++++++++++- >> drivers/net/ethernet/sfc/siena/selftest.c | 21 ++++++++++++++++++++- >> 3 files changed, 60 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/net/ethernet/sfc/falcon/selftest.c b/drivers/net/ethernet/sfc/falcon/selftest.c >> index 6a454ac6f8763..fb7fcd27a33a5 100644 >> --- a/drivers/net/ethernet/sfc/falcon/selftest.c >> +++ b/drivers/net/ethernet/sfc/falcon/selftest.c >> @@ -40,7 +40,26 @@ >> */ >> struct ef4_loopback_payload { >> struct ethhdr header; >> - struct iphdr ip; >> + struct { >> +#if defined(__LITTLE_ENDIAN_BITFIELD) >> + __u8 ihl:4, >> + version:4; >> +#elif defined (__BIG_ENDIAN_BITFIELD) >> + __u8 version:4, >> + ihl:4; >> +#else >> +#error "Please fix " >> +#endif >> + __u8 tos; >> + __be16 tot_len; >> + __be16 id; >> + __be16 frag_off; >> + __u8 ttl; >> + __u8 protocol; >> + __sum16 check; >> + __be32 saddr; >> + __be32 daddr; >> + } __packed ip; /* unaligned struct iphdr */ >> struct udphdr udp; >> __be16 iteration; >> char msg[64]; >> diff --git a/drivers/net/ethernet/sfc/selftest.c b/drivers/net/ethernet/sfc/selftest.c >> index 3c5227afd4977..440a57953779c 100644 >> --- a/drivers/net/ethernet/sfc/selftest.c >> +++ b/drivers/net/ethernet/sfc/selftest.c >> @@ -43,7 +43,26 @@ >> */ >> struct efx_loopback_payload { >> struct ethhdr header; >> - struct iphdr ip; >> + struct { >> +#if defined(__LITTLE_ENDIAN_BITFIELD) >> + __u8 ihl:4, >> + version:4; >> +#elif defined (__BIG_ENDIAN_BITFIELD) >> + __u8 version:4, >> + ihl:4; >> +#else >> +#error "Please fix " >> +#endif >> + __u8 tos; >> + __be16 tot_len; >> + __be16 id; >> + __be16 frag_off; >> + __u8 ttl; >> + __u8 protocol; >> + __sum16 check; >> + __be32 saddr; >> + __be32 daddr; >> + } __packed ip; /* unaligned struct iphdr */ >> struct udphdr udp; >> __be16 iteration; >> char msg[64]; >> diff --git a/drivers/net/ethernet/sfc/siena/selftest.c b/drivers/net/ethernet/sfc/siena/selftest.c >> index 07715a3d6beab..b8a8b0495f661 100644 >> --- a/drivers/net/ethernet/sfc/siena/selftest.c >> +++ b/drivers/net/ethernet/sfc/siena/selftest.c >> @@ -43,7 +43,26 @@ >> */ >> struct efx_loopback_payload { >> struct ethhdr header; >> - struct iphdr ip; >> + struct { >> +#if defined(__LITTLE_ENDIAN_BITFIELD) >> + __u8 ihl:4, >> + version:4; >> +#elif defined (__BIG_ENDIAN_BITFIELD) >> + __u8 version:4, >> + ihl:4; >> +#else >> +#error "Please fix " >> +#endif >> + __u8 tos; >> + __be16 tot_len; >> + __be16 id; >> + __be16 frag_off; >> + __u8 ttl; >> + __u8 protocol; >> + __sum16 check; >> + __be32 saddr; >> + __be32 daddr; >> + } __packed ip; /* unaligned struct iphdr */ >> struct udphdr udp; >> __be16 iteration; >> char msg[64]; >>