From b99bd4a0aacab47165d045a6aeee88ee74744600 Mon Sep 17 00:00:00 2001 From: Ke Zhang Date: Wed, 8 Jun 2022 15:11:17 +0300 Subject: [PATCH] kni: use dedicated function to set MAC address MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The warning info: warning: passing argument 1 of ‘memcpy’ discards ‘const’ qualifier from pointer target type Variable dev_addr is done const intentionally in v5.17 to prevent using it directly. See the following Linux kernel changeset for details: commit adeef3e32146 ("net: constify netdev->dev_addr") Used helper function was introduced earlier in v5.15. Fixes: ea6b39b5b847 ("kni: remove ethtool support") Cc: stable@dpdk.org Signed-off-by: Ke Zhang Signed-off-by: Andrew Rybchenko Acked-by: Ferruh Yigit --- kernel/linux/kni/compat.h | 4 ++++ kernel/linux/kni/kni_misc.c | 9 +++++++-- kernel/linux/kni/kni_net.c | 4 ++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h index 0db29a4a6f..3a86d12bbc 100644 --- a/kernel/linux/kni/compat.h +++ b/kernel/linux/kni/compat.h @@ -142,6 +142,10 @@ #define HAVE_TSK_IN_GUP #endif +#if KERNEL_VERSION(5, 15, 0) <= LINUX_VERSION_CODE +#define HAVE_ETH_HW_ADDR_SET +#endif + #if KERNEL_VERSION(5, 18, 0) > LINUX_VERSION_CODE #define HAVE_NETIF_RX_NI #endif diff --git a/kernel/linux/kni/kni_misc.c b/kernel/linux/kni/kni_misc.c index 4f6dd373a3..0c3a86ee35 100644 --- a/kernel/linux/kni/kni_misc.c +++ b/kernel/linux/kni/kni_misc.c @@ -402,11 +402,16 @@ kni_ioctl_create(struct net *net, uint32_t ioctl_num, pr_debug("mbuf_size: %u\n", kni->mbuf_size); /* if user has provided a valid mac address */ - if (is_valid_ether_addr(dev_info.mac_addr)) + if (is_valid_ether_addr(dev_info.mac_addr)) { +#ifdef HAVE_ETH_HW_ADDR_SET + eth_hw_addr_set(net_dev, dev_info.mac_addr); +#else memcpy(net_dev->dev_addr, dev_info.mac_addr, ETH_ALEN); - else +#endif + } else { /* Assign random MAC address. */ eth_hw_addr_random(net_dev); + } if (dev_info.mtu) net_dev->mtu = dev_info.mtu; diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c index 41805fcabf..779ee3451a 100644 --- a/kernel/linux/kni/kni_net.c +++ b/kernel/linux/kni/kni_net.c @@ -783,7 +783,11 @@ kni_net_set_mac(struct net_device *netdev, void *p) return -EADDRNOTAVAIL; memcpy(req.mac_addr, addr->sa_data, netdev->addr_len); +#ifdef HAVE_ETH_HW_ADDR_SET + eth_hw_addr_set(netdev, addr->sa_data); +#else memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len); +#endif ret = kni_net_process_request(netdev, &req);