tehuti: use ndo_siocdevprivate
Tehuti only implements private ioctl commands, and implements them by overriding the ifreq layout, which is broken in compat mode. Move it to the ndo_siocdevprivate callback in order to fix this. 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
99b78a37a3
commit
32d05468c4
@ -637,7 +637,8 @@ static int bdx_range_check(struct bdx_priv *priv, u32 offset)
|
||||
-EINVAL : 0;
|
||||
}
|
||||
|
||||
static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
|
||||
static int bdx_siocdevprivate(struct net_device *ndev, struct ifreq *ifr,
|
||||
void __user *udata, int cmd)
|
||||
{
|
||||
struct bdx_priv *priv = netdev_priv(ndev);
|
||||
u32 data[3];
|
||||
@ -647,7 +648,7 @@ static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
|
||||
|
||||
DBG("jiffies=%ld cmd=%d\n", jiffies, cmd);
|
||||
if (cmd != SIOCDEVPRIVATE) {
|
||||
error = copy_from_user(data, ifr->ifr_data, sizeof(data));
|
||||
error = copy_from_user(data, udata, sizeof(data));
|
||||
if (error) {
|
||||
pr_err("can't copy from user\n");
|
||||
RET(-EFAULT);
|
||||
@ -669,7 +670,7 @@ static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
|
||||
data[2] = READ_REG(priv, data[1]);
|
||||
DBG("read_reg(0x%x)=0x%x (dec %d)\n", data[1], data[2],
|
||||
data[2]);
|
||||
error = copy_to_user(ifr->ifr_data, data, sizeof(data));
|
||||
error = copy_to_user(udata, data, sizeof(data));
|
||||
if (error)
|
||||
RET(-EFAULT);
|
||||
break;
|
||||
@ -688,15 +689,6 @@ static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bdx_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
|
||||
{
|
||||
ENTER;
|
||||
if (cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + 15))
|
||||
RET(bdx_ioctl_priv(ndev, ifr, cmd));
|
||||
else
|
||||
RET(-EOPNOTSUPP);
|
||||
}
|
||||
|
||||
/**
|
||||
* __bdx_vlan_rx_vid - private helper for adding/killing VLAN vid
|
||||
* @ndev: network device
|
||||
@ -1860,7 +1852,7 @@ static const struct net_device_ops bdx_netdev_ops = {
|
||||
.ndo_stop = bdx_close,
|
||||
.ndo_start_xmit = bdx_tx_transmit,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_do_ioctl = bdx_ioctl,
|
||||
.ndo_siocdevprivate = bdx_siocdevprivate,
|
||||
.ndo_set_rx_mode = bdx_setmulti,
|
||||
.ndo_change_mtu = bdx_change_mtu,
|
||||
.ndo_set_mac_address = bdx_set_mac,
|
||||
|
Loading…
x
Reference in New Issue
Block a user