bonding: quit messing with IOCTL
The only remaining users are issuing SIOCGMIIPHY and SIOCGMIIREG, neither of which deals with userland pointers. Simply calling ->ndo_do_ioctl() is fine; no messing with set_fs() is needed. It used to mess with SIOCETHTOOL, which would've needed set_fs(), but that has been killed in "[NET] ethtool ops are the only way" 9 years ago... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Родитель
93b5097fe5
Коммит
4ad41c1e26
|
@ -471,9 +471,9 @@ static int bond_check_dev_link(struct bonding *bond,
|
|||
/* Yes, the mii is overlaid on the ifreq.ifr_ifru */
|
||||
strncpy(ifr.ifr_name, slave_dev->name, IFNAMSIZ);
|
||||
mii = if_mii(&ifr);
|
||||
if (IOCTL(slave_dev, &ifr, SIOCGMIIPHY) == 0) {
|
||||
if (ioctl(slave_dev, &ifr, SIOCGMIIPHY) == 0) {
|
||||
mii->reg_num = MII_BMSR;
|
||||
if (IOCTL(slave_dev, &ifr, SIOCGMIIREG) == 0)
|
||||
if (ioctl(slave_dev, &ifr, SIOCGMIIREG) == 0)
|
||||
return mii->val_out & BMSR_LSTATUS;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,18 +37,6 @@
|
|||
#ifndef __long_aligned
|
||||
#define __long_aligned __attribute__((aligned((sizeof(long)))))
|
||||
#endif
|
||||
/*
|
||||
* Less bad way to call ioctl from within the kernel; this needs to be
|
||||
* done some other way to get the call out of interrupt context.
|
||||
* Needs "ioctl" variable to be supplied by calling context.
|
||||
*/
|
||||
#define IOCTL(dev, arg, cmd) ({ \
|
||||
int res = 0; \
|
||||
mm_segment_t fs = get_fs(); \
|
||||
set_fs(get_ds()); \
|
||||
res = ioctl(dev, arg, cmd); \
|
||||
set_fs(fs); \
|
||||
res; })
|
||||
|
||||
#define BOND_MODE(bond) ((bond)->params.mode)
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче