Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp6146846iog; Thu, 23 Jun 2022 12:18:40 -0700 (PDT) X-Google-Smtp-Source: AGRyM1s5oDSoTYmeWfES3aGUdQN1rRso10jUV4vMwLyK0t7y8V87onv5GVo2BI/NtxZaYj6J667L X-Received: by 2002:a05:6a00:22ce:b0:525:53f7:24a9 with SMTP id f14-20020a056a0022ce00b0052553f724a9mr5506464pfj.54.1656011919933; Thu, 23 Jun 2022 12:18:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656011919; cv=none; d=google.com; s=arc-20160816; b=yCnUe/mNmDN8Rf0AZIZoWeNRksKJPd4M4lcPddvDxLfbEPzJWAT2tOsCN3EcFIlywe Y99scaqLnYCHyj1nZy30WrDmiKfGk3yrw8ZfTArKb5xFkp9si7dpSQrkxDrTGlCCYgJn ntiNdX1ojCXwyKB6SEmCMtMENTL7ar1Ddni02oKuJsLAJmkxpcZh8rrN5VmpZ+LRNhuF NZOVlmzgCO3p2uXDanNkT02qngmCQruyjjMt7ACAe6j22R1//Hm3jL71SLckX7JuFi/k NozD5s1z16987jXrGc9y5lnI1OPdlB8EkuPGXbFZ3M1cHDlBepXI9FoTicYbtFGHQDnG Sx1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=MZ1LeYK3D2Njfxpj6SnTG3sJWer9PqdFG4VrZ/xrhm0=; b=j6GcFIZoO0SZ89PTV3YCUldou8icAuqDGr7ugMwa/yhWEOS/+nL5crO8KeeSWRZBLr jfdOAGVk0r9YS0pM5NcaGCHRG2FS9EUvTi49IJvk0xx6W8LvLX9ByK9l7mndHFeEZh5w 3bohTlH8dqR6iHdmGV1TvF5q/AwjsMrCoSRpTnkWxPEXDAV285oeBiIO+dPCQIEZW9wZ 2/UtYpIRxMKVrtNgE24ABNQP1yxc4qImhOFnS3wqhtfoW/uSRuhEmwbQAreMx5e1Kfci ZNiHSOX/xIXBR+Qz5Y5KodzDsZRapFzhMZMR2MFwuwo/s6ConDsLVv0wkh773eYimNLn oSuA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=dGZbY254; 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=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s5-20020a656445000000b0040cd256b7f4si15058643pgv.407.2022.06.23.12.18.28; Thu, 23 Jun 2022 12:18:39 -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=@linuxfoundation.org header.s=korg header.b=dGZbY254; 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=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235110AbiFWRvV (ORCPT + 99 others); Thu, 23 Jun 2022 13:51:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41170 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235174AbiFWRvC (ORCPT ); Thu, 23 Jun 2022 13:51:02 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2DD9A4AE30; Thu, 23 Jun 2022 10:12:11 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 8FC5D61CD9; Thu, 23 Jun 2022 17:12:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 63B7BC3411B; Thu, 23 Jun 2022 17:12:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1656004328; bh=2z9tTJftywRoIVlylQdhtZ47Nl/uIFxFyf3M6FUq6Xo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dGZbY254lnjulv5NhvzMyaHRQEl6AoVc60Ic0N3eUSzi6ON4FLSPANyYl8PZNrz2r G+ONtyoXVxHQ3VwT32PodMp0cyFXMad4ThO48R1ppnlzOuxVe+OeWPGfgMQkgspawR H29oK9RIJKbW/9WSISYR2VsmsFhGzRE1Fr2XjH9s= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Marian Postevca Subject: [PATCH 5.15 5/9] usb: gadget: u_ether: fix regression in setting fixed MAC address Date: Thu, 23 Jun 2022 18:44:48 +0200 Message-Id: <20220623164322.448085871@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623164322.288837280@linuxfoundation.org> References: <20220623164322.288837280@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, 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 From: Marian Postevca commit b337af3a4d6147000b7ca6b3438bf5c820849b37 upstream. In systemd systems setting a fixed MAC address through the "dev_addr" module argument fails systematically. When checking the MAC address after the interface is created it always has the same but different MAC address to the one supplied as argument. This is partially caused by systemd which by default will set an internally generated permanent MAC address for interfaces that are marked as having a randomly generated address. Commit 890d5b40908bfd1a ("usb: gadget: u_ether: fix race in setting MAC address in setup phase") didn't take into account the fact that the interface must be marked as having a set MAC address when it's set as module argument. Fixed by marking the interface with NET_ADDR_SET when the "dev_addr" module argument is supplied. Fixes: 890d5b40908bfd1a ("usb: gadget: u_ether: fix race in setting MAC address in setup phase") Cc: stable@vger.kernel.org Signed-off-by: Marian Postevca Link: https://lore.kernel.org/r/20220603153459.32722-1-posteuca@mutex.one Signed-off-by: Greg Kroah-Hartman --- drivers/usb/gadget/function/u_ether.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) --- a/drivers/usb/gadget/function/u_ether.c +++ b/drivers/usb/gadget/function/u_ether.c @@ -774,9 +774,13 @@ struct eth_dev *gether_setup_name(struct dev->qmult = qmult; snprintf(net->name, sizeof(net->name), "%s%%d", netname); - if (get_ether_addr(dev_addr, net->dev_addr)) + if (get_ether_addr(dev_addr, net->dev_addr)) { + net->addr_assign_type = NET_ADDR_RANDOM; dev_warn(&g->dev, "using random %s ethernet address\n", "self"); + } else { + net->addr_assign_type = NET_ADDR_SET; + } if (get_ether_addr(host_addr, dev->host_mac)) dev_warn(&g->dev, "using random %s ethernet address\n", "host"); @@ -833,6 +837,9 @@ struct net_device *gether_setup_name_def INIT_LIST_HEAD(&dev->tx_reqs); INIT_LIST_HEAD(&dev->rx_reqs); + /* by default we always have a random MAC address */ + net->addr_assign_type = NET_ADDR_RANDOM; + skb_queue_head_init(&dev->rx_frames); /* network device setup */ @@ -869,7 +876,6 @@ int gether_register_netdev(struct net_de dev = netdev_priv(net); g = dev->gadget; - net->addr_assign_type = NET_ADDR_RANDOM; eth_hw_addr_set(net, dev->dev_mac); status = register_netdev(net); @@ -910,6 +916,7 @@ int gether_set_dev_addr(struct net_devic if (get_ether_addr(dev_addr, new_addr)) return -EINVAL; memcpy(dev->dev_mac, new_addr, ETH_ALEN); + net->addr_assign_type = NET_ADDR_SET; return 0; } EXPORT_SYMBOL_GPL(gether_set_dev_addr);