net: bonding: move ioctl handling to private ndo operation
All other user triggered operations are gone from ndo_ioctl, so move the SIOCBOND family into a custom operation as well. The .ndo_ioctl() helper is no longer called by the dev_ioctl.c code now, but there are still a few definitions in obsolete wireless drivers as well as the appletalk and ieee802154 layers to call SIOCSIFADDR/SIOCGIFADDR helpers from inside the kernel. Cc: Jay Vosburgh <j.vosburgh@gmail.com> Cc: Veaceslav Falico <vfalico@gmail.com> Cc: Andy Gospodarek <andy@greyhouse.net> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ad2f99aedf
commit
3d9d00bd18
|
@ -222,6 +222,17 @@ ndo_do_ioctl:
|
|||
Synchronization: rtnl_lock() semaphore.
|
||||
Context: process
|
||||
|
||||
This is only called by network subsystems internally,
|
||||
not by user space calling ioctl as it was in before
|
||||
linux-5.14.
|
||||
|
||||
ndo_siocbond:
|
||||
Synchronization: rtnl_lock() semaphore.
|
||||
Context: process
|
||||
|
||||
Used by the bonding driver for the SIOCBOND family of
|
||||
ioctl commands.
|
||||
|
||||
ndo_siocwandev:
|
||||
Synchronization: rtnl_lock() semaphore.
|
||||
Context: process
|
||||
|
|
|
@ -4988,7 +4988,7 @@ static const struct net_device_ops bond_netdev_ops = {
|
|||
.ndo_select_queue = bond_select_queue,
|
||||
.ndo_get_stats64 = bond_get_stats,
|
||||
.ndo_eth_ioctl = bond_eth_ioctl,
|
||||
.ndo_do_ioctl = bond_do_ioctl,
|
||||
.ndo_siocbond = bond_do_ioctl,
|
||||
.ndo_siocdevprivate = bond_siocdevprivate,
|
||||
.ndo_change_rx_flags = bond_change_rx_flags,
|
||||
.ndo_set_rx_mode = bond_set_rx_mode,
|
||||
|
|
|
@ -1086,9 +1086,14 @@ struct netdev_net_notifier {
|
|||
* Test if Media Access Control address is valid for the device.
|
||||
*
|
||||
* int (*ndo_do_ioctl)(struct net_device *dev, struct ifreq *ifr, int cmd);
|
||||
* Called when a user requests an ioctl which can't be handled by
|
||||
* the generic interface code. If not defined ioctls return
|
||||
* not supported error code.
|
||||
* Old-style ioctl entry point. This is used internally by the
|
||||
* appletalk and ieee802154 subsystems but is no longer called by
|
||||
* the device ioctl handler.
|
||||
*
|
||||
* int (*ndo_siocbond)(struct net_device *dev, struct ifreq *ifr, int cmd);
|
||||
* Used by the bonding driver for its device specific ioctls:
|
||||
* SIOCBONDENSLAVE, SIOCBONDRELEASE, SIOCBONDSETHWADDR, SIOCBONDCHANGEACTIVE,
|
||||
* SIOCBONDSLAVEINFOQUERY, and SIOCBONDINFOQUERY
|
||||
*
|
||||
* * int (*ndo_eth_ioctl)(struct net_device *dev, struct ifreq *ifr, int cmd);
|
||||
* Called for ethernet specific ioctls: SIOCGMIIPHY, SIOCGMIIREG,
|
||||
|
@ -1367,6 +1372,8 @@ struct net_device_ops {
|
|||
struct ifreq *ifr, int cmd);
|
||||
int (*ndo_eth_ioctl)(struct net_device *dev,
|
||||
struct ifreq *ifr, int cmd);
|
||||
int (*ndo_siocbond)(struct net_device *dev,
|
||||
struct ifreq *ifr, int cmd);
|
||||
int (*ndo_siocwandev)(struct net_device *dev,
|
||||
struct if_settings *ifs);
|
||||
int (*ndo_siocdevprivate)(struct net_device *dev,
|
||||
|
|
|
@ -260,14 +260,14 @@ static int dev_eth_ioctl(struct net_device *dev,
|
|||
return err;
|
||||
}
|
||||
|
||||
static int dev_do_ioctl(struct net_device *dev,
|
||||
static int dev_siocbond(struct net_device *dev,
|
||||
struct ifreq *ifr, unsigned int cmd)
|
||||
{
|
||||
const struct net_device_ops *ops = dev->netdev_ops;
|
||||
|
||||
if (ops->ndo_do_ioctl) {
|
||||
if (ops->ndo_siocbond) {
|
||||
if (netif_device_present(dev))
|
||||
return ops->ndo_do_ioctl(dev, ifr, cmd);
|
||||
return ops->ndo_siocbond(dev, ifr, cmd);
|
||||
else
|
||||
return -ENODEV;
|
||||
}
|
||||
|
@ -407,7 +407,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, void __user *data,
|
|||
cmd == SIOCBONDSLAVEINFOQUERY ||
|
||||
cmd == SIOCBONDINFOQUERY ||
|
||||
cmd == SIOCBONDCHANGEACTIVE) {
|
||||
err = dev_do_ioctl(dev, ifr, cmd);
|
||||
err = dev_siocbond(dev, ifr, cmd);
|
||||
} else
|
||||
err = -EINVAL;
|
||||
|
||||
|
|
Loading…
Reference in New Issue