| From foo@baz Wed 18 Mar 2020 07:02:29 PM CET |
| From: Sven Eckelmann <sven@narfation.org> |
| Date: Wed, 18 Mar 2020 00:27:34 +0100 |
| Subject: batman-adv: Don't schedule OGM for disabled interface |
| To: stable@vger.kernel.org |
| Cc: Sven Eckelmann <sven@narfation.org>, syzbot+a98f2016f40b9cd3818a@syzkaller.appspotmail.com, syzbot+ac36b6a33c28a491e929@syzkaller.appspotmail.com, Hillf Danton <hdanton@sina.com>, Simon Wunderlich <sw@simonwunderlich.de> |
| Message-ID: <20200317232734.6127-49-sven@narfation.org> |
| |
| From: Sven Eckelmann <sven@narfation.org> |
| |
| 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: Sven Eckelmann <sven@narfation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/batman-adv/bat_iv_ogm.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/net/batman-adv/bat_iv_ogm.c |
| +++ b/net/batman-adv/bat_iv_ogm.c |
| @@ -944,6 +944,10 @@ static void batadv_iv_ogm_schedule_buff( |
| |
| lockdep_assert_held(&hard_iface->bat_iv.ogm_buff_mutex); |
| |
| + /* interface already disabled by batadv_iv_ogm_iface_disable */ |
| + if (!*ogm_buff) |
| + return; |
| + |
| primary_if = batadv_primary_if_get_selected(bat_priv); |
| |
| if (hard_iface == primary_if) { |