Received: by 2002:ac0:8c9a:0:0:0:0:0 with SMTP id r26csp4133169ima; Mon, 4 Feb 2019 10:46:02 -0800 (PST) X-Google-Smtp-Source: AHgI3IagxtCCgnV4lvjzE6TlQY7ITPBFLBun2Q4+eXZhaZs9zxayq4RX9ao8le809Tari35E3Kor X-Received: by 2002:a63:3703:: with SMTP id e3mr728694pga.348.1549305962310; Mon, 04 Feb 2019 10:46:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549305962; cv=none; d=google.com; s=arc-20160816; b=03MuOUR5009qDmbiEPB1brunOKHMJXs0VOrzbWOPox/Ns9ZGuTLKFW6agGLdbTts3f 14QVDodb4+qCcyvOk02DmLEI5cU/1jzEUxuVi1HhG0ImoHh2hHDBGDHS6Y+kb5PVIwgV TP08+lJgRJtLIYl4dewV8XOJm9cLTRhlk/IK03JCQzz01LfNxDaXAdwYAFop7nZqcDJz zlTTBcgZ9q61qok2+AynTPcAsLqRLumzHzPYE9vObAo/8Za7jiSYwqJUsvxLaXWbQQrc ImRMV/N/jV0K+2Drg3RZ5QsWGlXT96NjJe3nFeBVaTQ1KUYoCta4FKhN5XqfalMbN9YM Vwng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=FHak4wYpOotsdst7BzOTo/udPkYFuXbz/Gx7k0NxduA=; b=i4h0p0QdDqAgWj69/BqgouRB+ZVwsassb/4NJOTd/ZurxVElDVXpfG03ZyFXUuvRdg Uywr1HSbhRpqamlftC3zX4dedeKFaqK18Bmr6YarzEuj2b0zU8Xv27TqLCSBB8d3rsuv yBJ+FwZa/cneQBsptHx5lBl20RAj2Je3gLxgwo7ckGXS5doDVHHo5CAZm/0Ph1Dko4kJ Uw/agLRQBjGVdbX+b5W01/u/5Am6XRVmWup5MBpw6fcRvPILZvqmQl+/59SaVeTX0yV3 B/THSaggRdJl390B9deQEqcMO+dddK/fPlXk0DF7KEmpbei984n1Uj6k9+F+sdXaTqP7 GUXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=RaGTN4xD; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p23si658221pgk.312.2019.02.04.10.45.46; Mon, 04 Feb 2019 10:46:02 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=RaGTN4xD; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1729528AbfBDSow (ORCPT + 99 others); Mon, 4 Feb 2019 13:44:52 -0500 Received: from mail-wr1-f65.google.com ([209.85.221.65]:40254 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726585AbfBDSov (ORCPT ); Mon, 4 Feb 2019 13:44:51 -0500 Received: by mail-wr1-f65.google.com with SMTP id p4so970181wrt.7; Mon, 04 Feb 2019 10:44:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=FHak4wYpOotsdst7BzOTo/udPkYFuXbz/Gx7k0NxduA=; b=RaGTN4xDxoqsORZ4BBwngBjLymljrq4ZW8dtOx+2GnkPl+BPuZ7lMJyfGGQ8Bk0xL5 hJtLfLuVZvWuOCyYnfVkyB6jqN1F7LcduxR+MmAjNHsR2gNt+NGUMpC1hq2lxd/2OvBx dW2XYpCgRoduih481jPgSZKjwuqbspGgEsYXRNUtoVuVpFUohTVeetpWBETwWv/Dvi+7 KuQaU+7ow1o5E51s1YS7enCFREFaFpKXVI7SY1HqgiS7emamFD2lof2oriJVpTtljxfh k3XBx9uU85MWL1pRYW3/fqI+OD910DXGU0posMutt3WcFwbQINQDGOlxbQPRvysOTyK9 TNdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=FHak4wYpOotsdst7BzOTo/udPkYFuXbz/Gx7k0NxduA=; b=aLMq0pnWf0QDGwaCgDdsbn9mnkE14BcWawCOXWv+7h27pGzIPy3PWOY5ZQ5BEDJG3F /yvJuWkCWxZEZV87ftHJ9406N8nJxm5hbtBhfcdGYwg9OVLL9WFmW8rtAHpg/PIt4xuK vOGXnvNZjPch39E7IUQXlPzEbAK3O+blWM502bgqKsRrcmnoMnp3ZSg5n9Hma9CxbJBH 5vngddlDJXdvIzJrxRddXP1QjCwyeZ2tlGtUapAf/3r2eQHeX0dFK9R8ULJ2yFFEW4o5 VhYVvGHR2oi17c41LOfmpXhski01uNPmYALElfmcyPXrWe9kWRZs36ulqUGoq7EdmRaP 59Ew== X-Gm-Message-State: AHQUAuZWa5ZwDtaWokNH0JIGrQxZIhFwUUxsEk/6JgHRzbMu6mC4cn+K TPvHQi9n9T34zyie+byXjfBgWMqO X-Received: by 2002:a5d:6907:: with SMTP id t7mr591511wru.226.1549305889023; Mon, 04 Feb 2019 10:44:49 -0800 (PST) Received: from ?IPv6:2003:ea:8bf1:e200:79d1:9f16:256f:82a8? (p200300EA8BF1E20079D19F16256F82A8.dip0.t-ipconnect.de. [2003:ea:8bf1:e200:79d1:9f16:256f:82a8]) by smtp.googlemail.com with ESMTPSA id h9sm4226347wrm.49.2019.02.04.10.44.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Feb 2019 10:44:48 -0800 (PST) Subject: Re: [PATCH v2 2/2] r8169: Avoid pointer aliasing To: Thierry Reding , "David S. Miller" , Andrew Lunn Cc: Realtek linux nic maintainers , netdev@vger.kernel.org, linux-kernel@vger.kernel.org References: <20190204164213.30727-1-thierry.reding@gmail.com> <20190204164213.30727-2-thierry.reding@gmail.com> From: Heiner Kallweit Message-ID: <80984ff5-b359-14ed-f617-2b92556c6e5a@gmail.com> Date: Mon, 4 Feb 2019 19:44:41 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.5.0 MIME-Version: 1.0 In-Reply-To: <20190204164213.30727-2-thierry.reding@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04.02.2019 17:42, Thierry Reding wrote: > From: Thierry Reding > > Read MAC address 32-bit at a time and manually extract the individual > bytes. This avoids pointer aliasing and gives the compiler a better > chance of optimizing the operation. > > Suggested-by: Andrew Lunn > Signed-off-by: Thierry Reding > --- > Applies to net-next. > > I tested this on a Jetson TX2 with an add-in Realtek ethernet card that > has a properly programmed OTP to verify that I got the endianess right. > Seems like everything works and the device behaves the same with or > without this patch. > > drivers/net/ethernet/realtek/r8169.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c > index 501891be7c56..192fbb36bc9f 100644 > --- a/drivers/net/ethernet/realtek/r8169.c > +++ b/drivers/net/ethernet/realtek/r8169.c > @@ -7113,12 +7113,21 @@ static int rtl_alloc_irq(struct rtl8169_private *tp) > static void rtl_read_mac_address(struct rtl8169_private *tp, > u8 mac_addr[ETH_ALEN]) > { > + u32 value; > + > /* Get MAC address */ > switch (tp->mac_version) { > case RTL_GIGA_MAC_VER_35 ... RTL_GIGA_MAC_VER_38: > case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_51: > - *(u32 *)&mac_addr[0] = rtl_eri_read(tp, 0xe0, ERIAR_EXGMAC); > - *(u16 *)&mac_addr[4] = rtl_eri_read(tp, 0xe4, ERIAR_EXGMAC); > + value = rtl_eri_read(tp, 0xe0, ERIAR_EXGMAC); > + mac_addr[0] = (value >> 0) & 0xff; > + mac_addr[1] = (value >> 8) & 0xff; > + mac_addr[2] = (value >> 16) & 0xff; > + mac_addr[3] = (value >> 24) & 0xff; > + > + value = rtl_eri_read(tp, 0xe4, ERIAR_EXGMAC); > + mac_addr[4] = (value >> 0) & 0xff; > + mac_addr[5] = (value >> 8) & 0xff; > break; > default: > break; > @@ -7316,7 +7325,7 @@ static int rtl_get_ether_clk(struct rtl8169_private *tp) > static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) > { > const struct rtl_cfg_info *cfg = rtl_cfg_infos + ent->driver_data; > - u8 mac_addr[ETH_ALEN] __aligned(4) = {}; > + u8 mac_addr[ETH_ALEN] = {}; > struct rtl8169_private *tp; > struct net_device *dev; > int chipset, region, i; > I just have one concern / question: After this there's a call to is_valid_ether_addr(mac_addr) and kernel-doc of is_valid_ether_addr() states that argument must be u16-aligned. AFAIK that's not guaranteed for a byte array. Heiner