Thread (24 messages) 24 messages, 3 authors, 2024-09-11

Re: [PATCH V9 net-next 11/11] net: add ndo_validate_addr check in dev_set_mac_address

From: Jijie Shao <shaojijie@huawei.com>
Date: 2024-09-11 13:30:36
Also in: lkml

on 2024/9/10 16:39, Kalesh Anakkur Purayil wrote:
On Tue, Sep 10, 2024 at 1:36 PM Jijie Shao [off-list ref] wrote:
quoted
If driver implements ndo_validate_addr,
core should check the mac address before ndo_set_mac_address.

Signed-off-by: Jijie Shao <shaojijie@huawei.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
ChangeLog:
v2 -> v3:
   - Use ndo_validate_addr() instead of is_valid_ether_addr()
     in dev_set_mac_address(), suggested by Jakub and Andrew.
   v2: https://lore.kernel.org/all/20240820140154.137876-1-shaojijie@huawei.com/ (local)
---
  net/core/dev.c | 5 +++++
  1 file changed, 5 insertions(+)
diff --git a/net/core/dev.c b/net/core/dev.c
index 22c3f14d9287..00e0f473ed44 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -9087,6 +9087,11 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
                 return -EOPNOTSUPP;
         if (sa->sa_family != dev->type)
                 return -EINVAL;
+       if (ops->ndo_validate_addr) {
+               err = ops->ndo_validate_addr(dev);
+               if (err)
+                       return err;
+       }
This patch may not work as expected.

ndo_validate_addr() has only one parameter.
The sa parameter of the MAC address is not transferred to the function.
So ndo_validate_addr() checks the old MAC address, not the new MAC address.

I haven't found a better way to fix it yet.
This patch may be dropped in v10.

Sorry,
	Jijie Shao



Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help