diff options
Diffstat (limited to 'net/ieee802154/af_ieee802154.c')
| -rw-r--r-- | net/ieee802154/af_ieee802154.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/net/ieee802154/af_ieee802154.c b/net/ieee802154/af_ieee802154.c index 3bb6bdb1dac1..af661805b9fa 100644 --- a/net/ieee802154/af_ieee802154.c +++ b/net/ieee802154/af_ieee802154.c | |||
| @@ -136,7 +136,7 @@ static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg, | |||
| 136 | unsigned int cmd) | 136 | unsigned int cmd) |
| 137 | { | 137 | { |
| 138 | struct ifreq ifr; | 138 | struct ifreq ifr; |
| 139 | int ret = -EINVAL; | 139 | int ret = -ENOIOCTLCMD; |
| 140 | struct net_device *dev; | 140 | struct net_device *dev; |
| 141 | 141 | ||
| 142 | if (copy_from_user(&ifr, arg, sizeof(struct ifreq))) | 142 | if (copy_from_user(&ifr, arg, sizeof(struct ifreq))) |
| @@ -146,8 +146,10 @@ static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg, | |||
| 146 | 146 | ||
| 147 | dev_load(sock_net(sk), ifr.ifr_name); | 147 | dev_load(sock_net(sk), ifr.ifr_name); |
| 148 | dev = dev_get_by_name(sock_net(sk), ifr.ifr_name); | 148 | dev = dev_get_by_name(sock_net(sk), ifr.ifr_name); |
| 149 | if (dev->type == ARPHRD_IEEE802154 || | 149 | |
| 150 | dev->type == ARPHRD_IEEE802154_PHY) | 150 | if ((dev->type == ARPHRD_IEEE802154 || |
| 151 | dev->type == ARPHRD_IEEE802154_PHY) && | ||
| 152 | dev->netdev_ops->ndo_do_ioctl) | ||
| 151 | ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, cmd); | 153 | ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, cmd); |
| 152 | 154 | ||
| 153 | if (!ret && copy_to_user(arg, &ifr, sizeof(struct ifreq))) | 155 | if (!ret && copy_to_user(arg, &ifr, sizeof(struct ifreq))) |
