]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.6-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Feb 2025 11:50:18 +0000 (12:50 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Feb 2025 11:50:18 +0000 (12:50 +0100)
added patches:
net-ncsi-use-dev_set_mac_address-for-get-mc-mac-address-handling.patch

queue-6.6/net-ncsi-use-dev_set_mac_address-for-get-mc-mac-address-handling.patch [new file with mode: 0644]
queue-6.6/series

diff --git a/queue-6.6/net-ncsi-use-dev_set_mac_address-for-get-mc-mac-address-handling.patch b/queue-6.6/net-ncsi-use-dev_set_mac_address-for-get-mc-mac-address-handling.patch
new file mode 100644 (file)
index 0000000..ac50e44
--- /dev/null
@@ -0,0 +1,82 @@
+From 05d91cdb1f9108426b14975ef4eeddf15875ca05 Mon Sep 17 00:00:00 2001
+From: Paul Fertser <fercerpav@gmail.com>
+Date: Mon, 20 Jan 2025 16:35:36 +0300
+Subject: net/ncsi: use dev_set_mac_address() for Get MC MAC Address handling
+
+From: Paul Fertser <fercerpav@gmail.com>
+
+commit 05d91cdb1f9108426b14975ef4eeddf15875ca05 upstream.
+
+Copy of the rationale from 790071347a0a1a89e618eedcd51c687ea783aeb3:
+
+Change ndo_set_mac_address to dev_set_mac_address because
+dev_set_mac_address provides a way to notify network layer about MAC
+change. In other case, services may not aware about MAC change and keep
+using old one which set from network adapter driver.
+
+As example, DHCP client from systemd do not update MAC address without
+notification from net subsystem which leads to the problem with acquiring
+the right address from DHCP server.
+
+Since dev_set_mac_address requires RTNL lock the operation can not be
+performed directly in the response handler, see
+9e2bbab94b88295dcc57c7580393c9ee08d7314d.
+
+The way of selecting the first suitable MAC address from the list is
+changed, instead of having the driver check it this patch just assumes
+any valid MAC should be good.
+
+Fixes: b8291cf3d118 ("net/ncsi: Add NC-SI 1.2 Get MC MAC Address command")
+Signed-off-by: Paul Fertser <fercerpav@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/ncsi/ncsi-rsp.c |   18 ++++++++----------
+ 1 file changed, 8 insertions(+), 10 deletions(-)
+
+--- a/net/ncsi/ncsi-rsp.c
++++ b/net/ncsi/ncsi-rsp.c
+@@ -1089,14 +1089,12 @@ static int ncsi_rsp_handler_netlink(stru
+ static int ncsi_rsp_handler_gmcma(struct ncsi_request *nr)
+ {
+       struct ncsi_dev_priv *ndp = nr->ndp;
++      struct sockaddr *saddr = &ndp->pending_mac;
+       struct net_device *ndev = ndp->ndev.dev;
+       struct ncsi_rsp_gmcma_pkt *rsp;
+-      struct sockaddr saddr;
+-      int ret = -1;
+       int i;
+       rsp = (struct ncsi_rsp_gmcma_pkt *)skb_network_header(nr->rsp);
+-      saddr.sa_family = ndev->type;
+       ndev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
+       netdev_info(ndev, "NCSI: Received %d provisioned MAC addresses\n",
+@@ -1108,20 +1106,20 @@ static int ncsi_rsp_handler_gmcma(struct
+                           rsp->addresses[i][4], rsp->addresses[i][5]);
+       }
++      saddr->sa_family = ndev->type;
+       for (i = 0; i < rsp->address_count; i++) {
+-              memcpy(saddr.sa_data, &rsp->addresses[i], ETH_ALEN);
+-              ret = ndev->netdev_ops->ndo_set_mac_address(ndev, &saddr);
+-              if (ret < 0) {
++              if (!is_valid_ether_addr(rsp->addresses[i])) {
+                       netdev_warn(ndev, "NCSI: Unable to assign %pM to device\n",
+-                                  saddr.sa_data);
++                                  rsp->addresses[i]);
+                       continue;
+               }
+-              netdev_warn(ndev, "NCSI: Set MAC address to %pM\n", saddr.sa_data);
++              memcpy(saddr->sa_data, rsp->addresses[i], ETH_ALEN);
++              netdev_warn(ndev, "NCSI: Will set MAC address to %pM\n", saddr->sa_data);
+               break;
+       }
+-      ndp->gma_flag = ret == 0;
+-      return ret;
++      ndp->gma_flag = 1;
++      return 0;
+ }
+ static struct ncsi_rsp_handler {
index fd7fe6eeacca5be9a106d3ea005bfd202a101a70..c28751dfdb51157c546a0f2e19b6fe2345d8f3b8 100644 (file)
@@ -259,3 +259,4 @@ rtc-zynqmp-fix-optional-clock-name-property.patch
 mips-ftrace-declare-ftrace_get_parent_ra_addr-as-static.patch
 spi-atmel-quadspi-create-atmel_qspi_ops-to-support-newer-soc-families.patch
 spi-atmel-qspi-memory-barriers-after-memory-mapped-i-o.patch
+net-ncsi-use-dev_set_mac_address-for-get-mc-mac-address-handling.patch