From patchwork Thu Feb 9 19:48:53 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Danny Kukawka X-Patchwork-Id: 140430 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 52364B6FA4 for ; Fri, 10 Feb 2012 06:49:59 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932144Ab2BITta (ORCPT ); Thu, 9 Feb 2012 14:49:30 -0500 Received: from wp188.webpack.hosteurope.de ([80.237.132.195]:43851 "EHLO wp188.webpack.hosteurope.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758377Ab2BITt2 (ORCPT ); Thu, 9 Feb 2012 14:49:28 -0500 Received: from nat.nue.novell.com ([195.135.221.2] helo=g231.suse.de); authenticated by wp188.webpack.hosteurope.de running ExIM with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) id 1RvZzf-0002g8-Ha; Thu, 09 Feb 2012 20:49:23 +0100 From: Danny Kukawka To: "David S. Miller" Cc: Danny Kukawka , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Neil Horman , Eric Dumazet , Randy Dunlap Subject: [PATCH v2 1/2] eth: reset addr_assign_type if eth_mac_addr() called Date: Thu, 9 Feb 2012 20:48:53 +0100 Message-Id: <1328816934-11508-2-git-send-email-danny.kukawka@bisect.de> X-Mailer: git-send-email 1.7.7.3 In-Reply-To: <1328816934-11508-1-git-send-email-danny.kukawka@bisect.de> References: <1328816934-11508-1-git-send-email-danny.kukawka@bisect.de> X-bounce-key: webpack.hosteurope.de; danny.kukawka@bisect.de; 1328816968; 53a409b9; Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org If eth_mac_addr() get called, usually if SIOCSIFHWADDR was used to change the MAC of a ethernet device, reset the addr_assign_type to NET_ADDR_PERM if the state was NET_ADDR_RANDOM before. Reset the state since the MAC is no longer random at least not from the kernel side. v2: changed to bitops, removed if() Signed-off-by: Danny Kukawka --- net/ethernet/eth.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index a246836..a93af86 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -288,6 +288,8 @@ int eth_mac_addr(struct net_device *dev, void *p) if (!is_valid_ether_addr(addr->sa_data)) return -EADDRNOTAVAIL; memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN); + /* if device marked as NET_ADDR_RANDOM, reset it */ + dev->addr_assign_type &= ~NET_ADDR_RANDOM; return 0; } EXPORT_SYMBOL(eth_mac_addr);