aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Eckelmann <[email protected]>2010-09-18 21:01:21 +0200
committerGreg Kroah-Hartman <[email protected]>2010-09-20 16:29:50 -0700
commit7e8158b341b2b043047b6f570c343fd9b0efd9c9 (patch)
tree32f125c87fafe2a5b25f436b307e5950a44b4530
parent399fb5b445370ddcc93221e339d02736f55b9bb8 (diff)
Staging: batman-adv: Track references of batman_if in set_primary_if
set_primary_if exchanges the current primary interfaces with a new one. This is a new reference and thus we have to count it and decrease the count of the old primary interface. Signed-off-by: Sven Eckelmann <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
-rw-r--r--drivers/staging/batman-adv/hard-interface.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/staging/batman-adv/hard-interface.c b/drivers/staging/batman-adv/hard-interface.c
index eef56318006b..a9d6f1d3a6b4 100644
--- a/drivers/staging/batman-adv/hard-interface.c
+++ b/drivers/staging/batman-adv/hard-interface.c
@@ -111,9 +111,17 @@ static void set_primary_if(struct bat_priv *bat_priv,
{
struct batman_packet *batman_packet;
struct vis_packet *vis_packet;
+ struct batman_if *old_if;
+ if (batman_if)
+ hardif_hold(batman_if);
+
+ old_if = bat_priv->primary_if;
bat_priv->primary_if = batman_if;
+ if (old_if)
+ hardif_put(old_if);
+
if (!bat_priv->primary_if)
return;