| From 4e88d3a42d6fd2de40c4841e524efb14c0e0e971 Mon Sep 17 00:00:00 2001 |
| From: Sven Eckelmann <sven@narfation.org> |
| Date: Sun, 16 Feb 2020 13:02:06 +0100 |
| Subject: [PATCH] batman-adv: Don't schedule OGM for disabled interface |
| |
| commit 8e8ce08198de193e3d21d42e96945216e3d9ac7f upstream. |
| |
| A transmission scheduling for an interface which is currently dropped by |
| batadv_iv_ogm_iface_disable could still be in progress. The B.A.T.M.A.N. V |
| is simply cancelling the workqueue item in an synchronous way but this is |
| not possible with B.A.T.M.A.N. IV because the OGM submissions are |
| intertwined. |
| |
| Instead it has to stop submitting the OGM when it detect that the buffer |
| pointer is set to NULL. |
| |
| Reported-by: syzbot+a98f2016f40b9cd3818a@syzkaller.appspotmail.com |
| Reported-by: syzbot+ac36b6a33c28a491e929@syzkaller.appspotmail.com |
| Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol") |
| Signed-off-by: Sven Eckelmann <sven@narfation.org> |
| Cc: Hillf Danton <hdanton@sina.com> |
| Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c |
| index 5b0b20e6da95..d88a4de02237 100644 |
| --- a/net/batman-adv/bat_iv_ogm.c |
| +++ b/net/batman-adv/bat_iv_ogm.c |
| @@ -789,6 +789,10 @@ static void batadv_iv_ogm_schedule_buff(struct batadv_hard_iface *hard_iface) |
| |
| lockdep_assert_held(&hard_iface->bat_iv.ogm_buff_mutex); |
| |
| + /* interface already disabled by batadv_iv_ogm_iface_disable */ |
| + if (!*ogm_buff) |
| + return; |
| + |
| /* the interface gets activated here to avoid race conditions between |
| * the moment of activating the interface in |
| * hardif_activate_interface() where the originator mac is set and |
| -- |
| 2.7.4 |
| |