summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMahesh Bandewar <maheshb@google.com>2020-03-09 15:57:07 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-03-18 07:14:19 +0100
commit084dce9dc9d3aa8debd2e6aea6020be721be8908 (patch)
tree67b94093737c1ae8684fb8f8ba0aed738cfa1ab5
parent10ea9902ed4f8b4d08658820f47e61fecb630b33 (diff)
downloadlinux-stable-084dce9dc9d3aa8debd2e6aea6020be721be8908.tar.gz
linux-stable-084dce9dc9d3aa8debd2e6aea6020be721be8908.tar.bz2
linux-stable-084dce9dc9d3aa8debd2e6aea6020be721be8908.zip
macvlan: add cond_resched() during multicast processing
[ Upstream commit ce9a4186f9ac475c415ffd20348176a4ea366670 ] The Rx bound multicast packets are deferred to a workqueue and macvlan can also suffer from the same attack that was discovered by Syzbot for IPvlan. This solution is not as effective as in IPvlan. IPvlan defers all (Tx and Rx) multicast packet processing to a workqueue while macvlan does this way only for the Rx. This fix should address the Rx codition to certain extent. Tx is still suseptible. Tx multicast processing happens when .ndo_start_xmit is called, hence we cannot add cond_resched(). However, it's not that severe since the user which is generating / flooding will be affected the most. Fixes: 412ca1550cbe ("macvlan: Move broadcasts into a work queue") Signed-off-by: Mahesh Bandewar <maheshb@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/net/macvlan.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 277bbff53cff..a8f338dc0dfa 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -338,6 +338,8 @@ static void macvlan_process_broadcast(struct work_struct *w)
if (src)
dev_put(src->dev);
kfree_skb(skb);
+
+ cond_resched();
}
}