diff options
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index fcdf03cf3b3f..460e7f99ce3e 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -3329,7 +3329,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd) | |||
| 3329 | return -EOPNOTSUPP; | 3329 | return -EOPNOTSUPP; |
| 3330 | 3330 | ||
| 3331 | case SIOCADDMULTI: | 3331 | case SIOCADDMULTI: |
| 3332 | if (!dev->set_multicast_list || | 3332 | if ((!dev->set_multicast_list && !dev->set_rx_mode) || |
| 3333 | ifr->ifr_hwaddr.sa_family != AF_UNSPEC) | 3333 | ifr->ifr_hwaddr.sa_family != AF_UNSPEC) |
| 3334 | return -EINVAL; | 3334 | return -EINVAL; |
| 3335 | if (!netif_device_present(dev)) | 3335 | if (!netif_device_present(dev)) |
| @@ -3338,7 +3338,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd) | |||
| 3338 | dev->addr_len, 1); | 3338 | dev->addr_len, 1); |
| 3339 | 3339 | ||
| 3340 | case SIOCDELMULTI: | 3340 | case SIOCDELMULTI: |
| 3341 | if (!dev->set_multicast_list || | 3341 | if ((!dev->set_multicast_list && !dev->set_rx_mode) || |
| 3342 | ifr->ifr_hwaddr.sa_family != AF_UNSPEC) | 3342 | ifr->ifr_hwaddr.sa_family != AF_UNSPEC) |
| 3343 | return -EINVAL; | 3343 | return -EINVAL; |
| 3344 | if (!netif_device_present(dev)) | 3344 | if (!netif_device_present(dev)) |
