mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-26 21:52:20 +00:00
net: add missing instance lock to dev_set_promiscuity
Accidentally spotted while trying to understand what else needs
to be renamed to netif_ prefix. Most of the calls to dev_set_promiscuity
are adjacent to dev_set_allmulti or dev_disable_lro so it should
be safe to add the lock. Note that new netif_set_promiscuity is
currently unused, the locked paths call __dev_set_promiscuity directly.
Fixes: ad7c7b2172
("net: hold netdev instance lock during sysfs operations")
Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
Link: https://patch.msgid.link/20250506011919.2882313-1-sdf@fomichev.me
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
08e9f2d584
commit
78cd408356
@ -4972,6 +4972,7 @@ static inline void __dev_mc_unsync(struct net_device *dev,
|
||||
|
||||
/* Functions used for secondary unicast and multicast support */
|
||||
void dev_set_rx_mode(struct net_device *dev);
|
||||
int netif_set_promiscuity(struct net_device *dev, int inc);
|
||||
int dev_set_promiscuity(struct net_device *dev, int inc);
|
||||
int netif_set_allmulti(struct net_device *dev, int inc, bool notify);
|
||||
int dev_set_allmulti(struct net_device *dev, int inc);
|
||||
|
@ -9193,18 +9193,7 @@ static int __dev_set_promiscuity(struct net_device *dev, int inc, bool notify)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* dev_set_promiscuity - update promiscuity count on a device
|
||||
* @dev: device
|
||||
* @inc: modifier
|
||||
*
|
||||
* Add or remove promiscuity from a device. While the count in the device
|
||||
* remains above zero the interface remains promiscuous. Once it hits zero
|
||||
* the device reverts back to normal filtering operation. A negative inc
|
||||
* value is used to drop promiscuity on the device.
|
||||
* Return 0 if successful or a negative errno code on error.
|
||||
*/
|
||||
int dev_set_promiscuity(struct net_device *dev, int inc)
|
||||
int netif_set_promiscuity(struct net_device *dev, int inc)
|
||||
{
|
||||
unsigned int old_flags = dev->flags;
|
||||
int err;
|
||||
@ -9216,7 +9205,6 @@ int dev_set_promiscuity(struct net_device *dev, int inc)
|
||||
dev_set_rx_mode(dev);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(dev_set_promiscuity);
|
||||
|
||||
int netif_set_allmulti(struct net_device *dev, int inc, bool notify)
|
||||
{
|
||||
|
@ -267,6 +267,29 @@ void dev_disable_lro(struct net_device *dev)
|
||||
}
|
||||
EXPORT_SYMBOL(dev_disable_lro);
|
||||
|
||||
/**
|
||||
* dev_set_promiscuity() - update promiscuity count on a device
|
||||
* @dev: device
|
||||
* @inc: modifier
|
||||
*
|
||||
* Add or remove promiscuity from a device. While the count in the device
|
||||
* remains above zero the interface remains promiscuous. Once it hits zero
|
||||
* the device reverts back to normal filtering operation. A negative inc
|
||||
* value is used to drop promiscuity on the device.
|
||||
* Return 0 if successful or a negative errno code on error.
|
||||
*/
|
||||
int dev_set_promiscuity(struct net_device *dev, int inc)
|
||||
{
|
||||
int ret;
|
||||
|
||||
netdev_lock_ops(dev);
|
||||
ret = netif_set_promiscuity(dev, inc);
|
||||
netdev_unlock_ops(dev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(dev_set_promiscuity);
|
||||
|
||||
/**
|
||||
* dev_set_allmulti() - update allmulti count on a device
|
||||
* @dev: device
|
||||
|
Loading…
Reference in New Issue
Block a user