batman-adv: Fix double-put of vlan object

Message ID 20160602230044.GM7555@decadent.org.uk (mailing list archive)
State Accepted, archived
Commit 22bb8b894900064d3fb09032a47577e89fc30d7c
Delegated to: Marek Lindner
Headers

Commit Message

Ben Hutchings June 2, 2016, 11 p.m. UTC
  Commit a33d970d0b54 "batman-adv: Fix reference counting of vlan object
for tt_local_entry") makes each batadv_tt_local_entry hold a single
reference to a batadv_softif_vlan.  In case a new entry cannot be
added to the hash table, the error path puts the reference, but the
reference will also now be dropped by batadv_tt_local_entry_release().

Fixes: a33d970d0b54 ("batman-adv: Fix reference counting of vlan object ...")
Cc: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
This is untested; I just spotted this apparent oversight while trying
to backport the previous fix.

Ben.

 net/batman-adv/translation-table.c | 1 -
 1 file changed, 1 deletion(-)
  

Comments

Sven Eckelmann June 3, 2016, 12:06 a.m. UTC | #1
On Friday 03 June 2016 00:00:44 Ben Hutchings wrote:
> Commit a33d970d0b54 "batman-adv: Fix reference counting of vlan object
> for tt_local_entry") makes each batadv_tt_local_entry hold a single
> reference to a batadv_softif_vlan.  In case a new entry cannot be
> added to the hash table, the error path puts the reference, but the
> reference will also now be dropped by batadv_tt_local_entry_release().
> 
> Fixes: a33d970d0b54 ("batman-adv: Fix reference counting of vlan object
> ...") Cc: Sven Eckelmann <sven@narfation.org>
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ---
> This is untested; I just spotted this apparent oversight while trying
> to backport the previous fix.

Yes, you are completely right. I've missed this line in the error handling 
path for hash_add in batadv_tt_local_add

Acked-by: Sven Eckelmann <sven@narfation.org>

Kind regards,
	Sven
  
Sven Eckelmann June 3, 2016, 9:05 a.m. UTC | #2
On Friday 03 June 2016 00:00:44 Ben Hutchings wrote:
> Fixes: a33d970d0b54 ("batman-adv: Fix reference counting of vlan object ...")

Btw the Fixes for the batman-adv.git is:

Fixes: 20ca393adddf ("batman-adv: Fix reference counting of vlan object for tt_local_entry")

Kind regards,
	Sven
  
Marek Lindner June 6, 2016, 3:31 p.m. UTC | #3
On Friday, June 03, 2016 02:06:10 Sven Eckelmann wrote:
> On Friday 03 June 2016 00:00:44 Ben Hutchings wrote:
> > Commit a33d970d0b54 "batman-adv: Fix reference counting of vlan object
> > for tt_local_entry") makes each batadv_tt_local_entry hold a single
> > reference to a batadv_softif_vlan.  In case a new entry cannot be
> > added to the hash table, the error path puts the reference, but the
> > reference will also now be dropped by batadv_tt_local_entry_release().
> > 
> > Fixes: a33d970d0b54 ("batman-adv: Fix reference counting of vlan object
> > ...") Cc: Sven Eckelmann <sven@narfation.org>
> > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> > ---
> > This is untested; I just spotted this apparent oversight while trying
> > to backport the previous fix.
> 
> Yes, you are completely right. I've missed this line in the error handling
> path for hash_add in batadv_tt_local_add
> 
> Acked-by: Sven Eckelmann <sven@narfation.org>

Applied in revision 22bb8b8.

Thanks,
Marek
  

Patch

diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
index feaf492b01ca..2068cf6648cb 100644
--- a/net/batman-adv/translation-table.c
+++ b/net/batman-adv/translation-table.c
@@ -691,7 +691,6 @@  bool batadv_tt_local_add(struct net_device *soft_iface, const u8 *addr,
 	if (unlikely(hash_added != 0)) {
 		/* remove the reference for the hash */
 		batadv_tt_local_entry_put(tt_local);
-		batadv_softif_vlan_put(vlan);
 		goto out;
 	}