Received: by 10.213.65.68 with SMTP id h4csp766647imn; Fri, 6 Apr 2018 08:32:54 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/JiWNXpsoWh54NqCEPugHgjuKEEzC06LsIVvM1HxTWwMiOrDHWlNBENNaB3G72O9KqJGVJ X-Received: by 10.99.100.197 with SMTP id y188mr17818593pgb.277.1523028774147; Fri, 06 Apr 2018 08:32:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523028774; cv=none; d=google.com; s=arc-20160816; b=Ky3xbL/izfeDJo1g9UeldVATgR8AvNXQVr3qqPFwwe6urRO3eG+7ae5WeIn9ZHqR89 aXXmWP0bn2YjcDpl5FI/EZmbgnObe7+CQG0FdJilxoMbInrD7Q4cH6zYBecj/dECBcfF erwr0awZF3MnC8VsahPF8rpK6Jj0Fa+E5WOqN/N5NbyKAf4KLcV2Cf7AFoX8ezc7jhEV ETtrFupQ0S8PvD8kd9l91mQhcDi/KolXvyzR+MEuaNoZh005X5ldBbVt07n23AMYIh15 feadjZwHB2EEzqxj3LbJRcOvSJ4avQ05gENV5T4zJCrVsvLawmLpux0j0lrGiq7b+w4h aI/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=kTzAeU2vnNezdBLs/65R3ihpOVh9BhYW7aClZ6MLkuY=; b=xNpNgqWWFTRa8WPB3KyVJYRWW9qo6bObgT92OVy0ZhpXfrfv0BKWMPgpcoBkMeSFfG Cqt2xPu1xIRV/TlyHIQAV+cdwuyim1SroacMIySIh0creG8FoerhO/+I+RQJcm31sjMA HsJUeIWl6JWYSvWoQMV9R9FV40uZLx5bySXojOST8JvpuDhPbU5VOM9+5j9GWafbnmtA C/WhMBr5SoJ3BzDNWpNgkSwsDFi/b+55AdzHi4gK6hnN73IxTdx36H8R8hvVUaLvKVeW eQjgR6DydFppPMpZ8moCGo1pXQQb+/Tf/SeumkPVEVMU4hO5SnkBojVa6A1suIBXfvhd ErwA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u3-v6si8656953plb.593.2018.04.06.08.32.40; Fri, 06 Apr 2018 08:32:54 -0700 (PDT) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753584AbeDFNZl (ORCPT + 99 others); Fri, 6 Apr 2018 09:25:41 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:54134 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752961AbeDFNZh (ORCPT ); Fri, 6 Apr 2018 09:25:37 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id D3C2EDE4; Fri, 6 Apr 2018 13:25:36 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hans de Goede , Hante Meuleman , Pieter-Paul Giesberts , Franky Lin , Arend van Spriel , Kalle Valo Subject: [PATCH 3.18 13/93] brcmfmac: fix P2P_DEVICE ethernet address generation Date: Fri, 6 Apr 2018 15:22:42 +0200 Message-Id: <20180406084225.537702624@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180406084224.918716300@linuxfoundation.org> References: <20180406084224.918716300@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Arend Van Spriel commit 455f3e76cfc0d893585a5f358b9ddbe9c1e1e53b upstream. The firmware has a requirement that the P2P_DEVICE address should be different from the address of the primary interface. When not specified by user-space, the driver generates the MAC address for the P2P_DEVICE interface using the MAC address of the primary interface and setting the locally administered bit. However, the MAC address of the primary interface may already have that bit set causing the creation of the P2P_DEVICE interface to fail with -EBUSY. Fix this by using a random address instead to determine the P2P_DEVICE address. Cc: stable@vger.kernel.org # 3.10.y Reported-by: Hans de Goede Reviewed-by: Hante Meuleman Reviewed-by: Pieter-Paul Giesberts Reviewed-by: Franky Lin Signed-off-by: Arend van Spriel Signed-off-by: Kalle Valo Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) --- a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c @@ -460,25 +460,23 @@ static int brcmf_p2p_set_firmware(struct * @dev_addr: optional device address. * * P2P needs mac addresses for P2P device and interface. If no device - * address it specified, these are derived from the primary net device, ie. - * the permanent ethernet address of the device. + * address it specified, these are derived from a random ethernet + * address. */ static void brcmf_p2p_generate_bss_mac(struct brcmf_p2p_info *p2p, u8 *dev_addr) { - struct brcmf_if *pri_ifp = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif->ifp; - bool local_admin = false; + bool random_addr = false; - if (!dev_addr || is_zero_ether_addr(dev_addr)) { - dev_addr = pri_ifp->mac_addr; - local_admin = true; - } + if (!dev_addr || is_zero_ether_addr(dev_addr)) + random_addr = true; - /* Generate the P2P Device Address. This consists of the device's - * primary MAC address with the locally administered bit set. + /* Generate the P2P Device Address obtaining a random ethernet + * address with the locally administered bit set. */ - memcpy(p2p->dev_addr, dev_addr, ETH_ALEN); - if (local_admin) - p2p->dev_addr[0] |= 0x02; + if (random_addr) + eth_random_addr(p2p->dev_addr); + else + memcpy(p2p->dev_addr, dev_addr, ETH_ALEN); /* Generate the P2P Interface Address. If the discovery and connection * BSSCFGs need to simultaneously co-exist, then this address must be