lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220609083904.91778-1-lianglixuehao@126.com>
Date:   Thu,  9 Jun 2022 08:39:04 +0000
From:   Lixue Liang <lianglixuehao@....com>
To:     pmenzel@...gen.mpg.de
Cc:     anthony.l.nguyen@...el.com, intel-wired-lan@...ts.osuosl.org,
        jesse.brandeburg@...el.com, kuba@...nel.org,
        lianglixue@...atwall.com.cn, netdev@...r.kernel.org
Subject: [PATCH v5] igb: Assign random MAC address instead of fail in case of invalid one

From: Lixue Liang <lianglixue@...atwall.com.cn>

In some cases, when the user uses igb_set_eeprom to modify the MAC address
to be invalid, or an invalid MAC address appears when with uninitialized
samples, the igb driver will fail to load. If there is no network card
device, the user could not conveniently modify it to a valid MAC address,
for example using ethtool to modify.

Through module parameter to set,when the MAC address is invalid, a random
valid MAC address can be used to continue loading and output relevant log
reminders. In this way, users can conveniently correct invalid MAC address.

Signed-off-by: Lixue Liang <lianglixue@...atwall.com.cn>
---
Changelog:
* v5:
  - Through the setting of module parameters, it is allowed to complete
    the loading of the igb network card driver with an invalid MAC address.
  Suggested-by <alexander.duyck@...il.com>
* v4:
  - Change the igb_mian in the title to igb
  - Fix dev_err message: replace "already assigned random MAC address"
    with "Invalid MAC address. Assigned random MAC address"
  Suggested-by Tony <anthony.l.nguyen@...el.com>

* v3:
  - Add space after comma in commit message
  - Correct spelling of MAC address
  Suggested-by Paul <pmenzel@...gen.mpg.de>

* v2:
  - Change memcpy to ether_addr_copy
  - Change dev_info to dev_err
  - Fix the description of the commit message
  - Change eth_random_addr to eth_hw_addr_random
  Reported-by: kernel test robot <lkp@...el.com>

 drivers/net/ethernet/intel/igb/igb_main.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 34b33b21e0dc..8162e8999ccb 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -238,8 +238,11 @@ MODULE_LICENSE("GPL v2");
 
 #define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV|NETIF_MSG_PROBE|NETIF_MSG_LINK)
 static int debug = -1;
+static unsigned int invalid_mac_address_allow;
 module_param(debug, int, 0);
+module_param(invalid_mac_address_allow, uint, 0);
 MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
+MODULE_PARM_DESC(invalid_mac_address_allow, "Allow NIC driver to be loaded with invalid MAC address");
 
 struct igb_reg_info {
 	u32 ofs;
@@ -3359,9 +3362,16 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	eth_hw_addr_set(netdev, hw->mac.addr);
 
 	if (!is_valid_ether_addr(netdev->dev_addr)) {
-		dev_err(&pdev->dev, "Invalid MAC Address\n");
-		err = -EIO;
-		goto err_eeprom;
+		if (!invalid_mac_address_allow) {
+			dev_err(&pdev->dev, "Invalid MAC Address\n");
+			err = -EIO;
+			goto err_eeprom;
+		} else {
+			eth_hw_addr_random(netdev);
+			ether_addr_copy(hw->mac.addr, netdev->dev_addr);
+			dev_err(&pdev->dev,
+				"Invalid MAC address. Assigned random MAC address\n");
+		}
 	}
 
 	igb_set_default_mac_filter(adapter);
-- 
2.27.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ