mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-27 06:50:37 +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 */
|
/* Functions used for secondary unicast and multicast support */
|
||||||
void dev_set_rx_mode(struct net_device *dev);
|
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 dev_set_promiscuity(struct net_device *dev, int inc);
|
||||||
int netif_set_allmulti(struct net_device *dev, int inc, bool notify);
|
int netif_set_allmulti(struct net_device *dev, int inc, bool notify);
|
||||||
int dev_set_allmulti(struct net_device *dev, int inc);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
int netif_set_promiscuity(struct net_device *dev, int inc)
|
||||||
* 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)
|
|
||||||
{
|
{
|
||||||
unsigned int old_flags = dev->flags;
|
unsigned int old_flags = dev->flags;
|
||||||
int err;
|
int err;
|
||||||
@ -9216,7 +9205,6 @@ int dev_set_promiscuity(struct net_device *dev, int inc)
|
|||||||
dev_set_rx_mode(dev);
|
dev_set_rx_mode(dev);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(dev_set_promiscuity);
|
|
||||||
|
|
||||||
int netif_set_allmulti(struct net_device *dev, int inc, bool notify)
|
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);
|
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_set_allmulti() - update allmulti count on a device
|
||||||
* @dev: device
|
* @dev: device
|
||||||
|
Loading…
Reference in New Issue
Block a user