45 lines
1.8 KiB
Diff
45 lines
1.8 KiB
Diff
From: Sven Eckelmann <sven@narfation.org>
|
|
Date: Sat, 2 Jun 2018 17:26:34 +0200
|
|
Subject: batman-adv: Fix bat_ogm_iv best gw refcnt after netlink dump
|
|
|
|
A reference for the best gateway is taken when the list of gateways in the
|
|
mesh is sent via netlink. This is necessary to check whether the currently
|
|
dumped entry is the currently selected gateway or not. This information is
|
|
then transferred as flag BATADV_ATTR_FLAG_BEST.
|
|
|
|
After the comparison of the current entry is done,
|
|
batadv_iv_gw_dump_entry() has to decrease the reference counter again.
|
|
Otherwise the reference will be held and thus prevents a proper shutdown of
|
|
the batman-adv interfaces (and some of the interfaces enslaved in it).
|
|
|
|
Fixes: fa3228924152 ("batman-adv: add B.A.T.M.A.N. IV bat_gw_dump implementations")
|
|
Reported-by: Andreas Ziegler <dev@andreas-ziegler.de>
|
|
Tested-by: Andreas Ziegler <dev@andreas-ziegler.de>
|
|
Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
|
Acked-by: Marek Lindner <mareklindner@neomailbox.ch>
|
|
|
|
Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/46360d203c627e71a27d1f8f551c819c7f2353fd
|
|
|
|
diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c
|
|
index be09a98838252f4f0c23cec0625930cf896cd0ff..73bf6a93a3cf1141a34657bf1284893199e04db9 100644
|
|
--- a/net/batman-adv/bat_iv_ogm.c
|
|
+++ b/net/batman-adv/bat_iv_ogm.c
|
|
@@ -2732,7 +2732,7 @@ static int batadv_iv_gw_dump_entry(struct sk_buff *msg, u32 portid, u32 seq,
|
|
{
|
|
struct batadv_neigh_ifinfo *router_ifinfo = NULL;
|
|
struct batadv_neigh_node *router;
|
|
- struct batadv_gw_node *curr_gw;
|
|
+ struct batadv_gw_node *curr_gw = NULL;
|
|
int ret = 0;
|
|
void *hdr;
|
|
|
|
@@ -2780,6 +2780,8 @@ static int batadv_iv_gw_dump_entry(struct sk_buff *msg, u32 portid, u32 seq,
|
|
ret = 0;
|
|
|
|
out:
|
|
+ if (curr_gw)
|
|
+ batadv_gw_node_put(curr_gw);
|
|
if (router_ifinfo)
|
|
batadv_neigh_ifinfo_put(router_ifinfo);
|
|
if (router)
|