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

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

diff --git a/queue-6.1/net-ncsi-use-dev_set_mac_address-for-get-mc-mac-address-handling.patch b/queue-6.1/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 1b62815e338ec4a387b2353a08eb38aa6d56b43a..42699c792405a5f33e82fb1471663f05f75505d4 100644 (file)
@@ -450,3 +450,4 @@ io_uring-fix-multishots-with-selected-buffers.patch
 io_uring-fix-io_req_prep_async-with-provided-buffers.patch
 io_uring-rw-commit-provided-buffer-state-on-async.patch
 mips-ftrace-declare-ftrace_get_parent_ra_addr-as-static.patch
+net-ncsi-use-dev_set_mac_address-for-get-mc-mac-address-handling.patch