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