diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 4 | ||||
-rw-r--r-- | net/core/dev_addr_lists.c | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 2705a2ab89af..974199daa911 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -2895,8 +2895,10 @@ static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb, | |||
2895 | if (unlikely(tcpu != next_cpu) && | 2895 | if (unlikely(tcpu != next_cpu) && |
2896 | (tcpu == RPS_NO_CPU || !cpu_online(tcpu) || | 2896 | (tcpu == RPS_NO_CPU || !cpu_online(tcpu) || |
2897 | ((int)(per_cpu(softnet_data, tcpu).input_queue_head - | 2897 | ((int)(per_cpu(softnet_data, tcpu).input_queue_head - |
2898 | rflow->last_qtail)) >= 0)) | 2898 | rflow->last_qtail)) >= 0)) { |
2899 | tcpu = next_cpu; | ||
2899 | rflow = set_rps_cpu(dev, skb, rflow, next_cpu); | 2900 | rflow = set_rps_cpu(dev, skb, rflow, next_cpu); |
2901 | } | ||
2900 | 2902 | ||
2901 | if (tcpu != RPS_NO_CPU && cpu_online(tcpu)) { | 2903 | if (tcpu != RPS_NO_CPU && cpu_online(tcpu)) { |
2902 | *rflowp = rflow; | 2904 | *rflowp = rflow; |
diff --git a/net/core/dev_addr_lists.c b/net/core/dev_addr_lists.c index 87cc17db2d56..b079c7bbc157 100644 --- a/net/core/dev_addr_lists.c +++ b/net/core/dev_addr_lists.c | |||
@@ -319,7 +319,8 @@ int dev_addr_del(struct net_device *dev, const unsigned char *addr, | |||
319 | */ | 319 | */ |
320 | ha = list_first_entry(&dev->dev_addrs.list, | 320 | ha = list_first_entry(&dev->dev_addrs.list, |
321 | struct netdev_hw_addr, list); | 321 | struct netdev_hw_addr, list); |
322 | if (ha->addr == dev->dev_addr && ha->refcount == 1) | 322 | if (!memcmp(ha->addr, addr, dev->addr_len) && |
323 | ha->type == addr_type && ha->refcount == 1) | ||
323 | return -ENOENT; | 324 | return -ENOENT; |
324 | 325 | ||
325 | err = __hw_addr_del(&dev->dev_addrs, addr, dev->addr_len, | 326 | err = __hw_addr_del(&dev->dev_addrs, addr, dev->addr_len, |