Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp6179554rwd; Mon, 19 Jun 2023 03:40:39 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5jH9DrygPIKkSS21fQ1mpbNwnAM/Q7auzqlnCQaGGmOl3eX0Hjp0RL8kLh5JZ7b7qWHvw9 X-Received: by 2002:a05:6a00:1820:b0:668:732d:7d9f with SMTP id y32-20020a056a00182000b00668732d7d9fmr5531637pfa.2.1687171238995; Mon, 19 Jun 2023 03:40:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687171238; cv=none; d=google.com; s=arc-20160816; b=G65YKQAYOWlnkVYCpP2XMBNS33GQCkOqkwPO2azGELFlgc9xQKPgykFk8gojYE7AJj MNUm3FHDSgBr/brymV1OrALQ+S5nyWVFSCdTGatnKwTa6qDs9iYt7ffkQTDzjBgz/XDo C+0b0+9g/Jr45Rlx6txBPSLjTLPVGxbRD18L2Ei9gHuAgtM1SCl2EySpKdrvzVRyjUHH ffNI1V8NBNfSJoL36pfJqmMjU8m4ATfgmcS58Cb4udm0AFnOg/oSjA1ZI5WjEPkTqjcb zdHHl3Rf5zO6+b2z9HonEs51PEpg9jjOIQFgyLJ7Ophqs8LipU9MUfYrBihVv9jWi7Vs rHUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=gng9SazytkDXh+NW6WTbuYnGKFStOTanhoWvA/17AEw=; b=r5mZshYKWPzEK/3XaP6KcGKQIBHk/O/27QYzz4qXXR/5/I7Iv34AirpJDYED5dxFeG ZiQBcVR1xKgl5rJWP7uXDoc8C23/zGq//MC36q4suz4Semerg55hvSGU3HNGejDFGAbr SP3kegobRbc6Jz0bwpMe2psEteShqoLIKZEUVjWuxFo11ArzwnB6Xi03MRCqHT8rWDm7 LnU+S4RvC1HCbjE16YKKFjWPAcnqxksX3IpoVmcDAbzW8OH+VroBNeEdJp5C7xjNULA0 4OMIHgvQURF6fVabtDoinyO16KG6wpMpo1Y102JUbuxXmPONJ9MJkfDB3HNI2hBWD/yV c7wA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=e519CGsi; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t190-20020a625fc7000000b006687388a0b6si2718618pfb.309.2023.06.19.03.40.27; Mon, 19 Jun 2023 03:40:38 -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=@gmail.com header.s=20221208 header.b=e519CGsi; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231384AbjFSKZ4 (ORCPT + 99 others); Mon, 19 Jun 2023 06:25:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231225AbjFSKZy (ORCPT ); Mon, 19 Jun 2023 06:25:54 -0400 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6873C2; Mon, 19 Jun 2023 03:25:52 -0700 (PDT) Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-3f9002a1a9bso30677785e9.1; Mon, 19 Jun 2023 03:25:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687170351; x=1689762351; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:from:references:cc:to:subject:from:to:cc :subject:date:message-id:reply-to; bh=gng9SazytkDXh+NW6WTbuYnGKFStOTanhoWvA/17AEw=; b=e519CGsiML3H5sSONGn/kXv4+3LZa6Ioi/kR/j67eaQgwe0rlRwlYP715Z91n1/XWt 8s0WP3KmoxkY1c1ZlmiND/DBj7T92JLqFu9R3KOiPnbKeeFDisCtb/lBSPp1Xg6rAyRL uCLzLtigVLuIyZnNG9Q7O82B51xHPfU26RxKZxdNyfhzXJeK9Z/1n5Vi5k4LIi3Da0wb U2r1c03BZZreqXkuK9nuli74snMMVRnNkA7X6lyzEMUeT9sauDW8TuvTI3J7PIKDQ8Q5 7FU+8eJmGAEhBZhcD+XSSmfAD3eDG5UY3Njaw51d18dd9lasT/cVouREzJp3trBzj3NG cSUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687170351; x=1689762351; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:from:references:cc:to:subject :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=gng9SazytkDXh+NW6WTbuYnGKFStOTanhoWvA/17AEw=; b=M1sQys/qh2Gi1cy5AB5Rtrp3tydzoBcvI+KA91n4H2vLmMYQ5QplOzE37BlQ/hXgJh CrrLlbFBg0grMNCqgMq0ZLBNuP2QR1TeJ3HOumi+Ski1NzqLFWAeGWtWaNY1H2LCxLo3 NL2omBu75Q0+Ev2IsDACmV0bWY+jmTuwdaLOSX+y8r424cIRpkzxf/+rUaabLiY8nj4o WukW3HXrd7gORgeQzP+BTWE0q44yA10L4h+ZaqOlI45QmEY7qoNtCQq6Kh6y8MPDVQa5 giSYX4mAsjcsjub1yq/EPrFR8jThVgicWSWHx2LYZOC61CMiKCtru2a8OmIvnv18aDnn rqog== X-Gm-Message-State: AC+VfDxsY4doLVPQRU7x/N9hVa6owLaFnGh7nZK05vWfRct5ZBTFyNVw JGJiZGHgAgDFXERfrPnA/pi8LGpu1EY= X-Received: by 2002:a1c:6a13:0:b0:3f9:57b:b34a with SMTP id f19-20020a1c6a13000000b003f9057bb34amr5866282wmc.6.1687170351077; Mon, 19 Jun 2023 03:25:51 -0700 (PDT) Received: from [192.168.1.122] (cpc159313-cmbg20-2-0-cust161.5-4.cable.virginm.net. [82.0.78.162]) by smtp.gmail.com with ESMTPSA id d17-20020adffbd1000000b0030fb4b55c13sm24991899wrs.96.2023.06.19.03.25.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Jun 2023 03:25:50 -0700 (PDT) Subject: Re: [PATCH 3/3] sfc: selftest: fix struct packing To: Arnd Bergmann , Martin Habets , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Arnd Bergmann , netdev@vger.kernel.org, linux-net-drivers@amd.com, linux-kernel@vger.kernel.org References: <20230619091215.2731541-1-arnd@kernel.org> <20230619091215.2731541-3-arnd@kernel.org> From: Edward Cree Message-ID: <7c448f02-4031-0a90-97e2-0cc663b0cff9@gmail.com> Date: Mon, 19 Jun 2023 11:25:49 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <20230619091215.2731541-3-arnd@kernel.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,NICE_REPLY_A, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,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 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]; >