Re: [B.A.T.M.A.N.] [PATCH v4 03/31] batman-adv: Avoid recursive call_rcu for batadv_bla_claim

Simon Wunderlich
2016-01-14T14:24:47Z

[-- Attachment #1: Type: text/plain, Size: 1197 bytes --]

On Tuesday 05 January 2016 12:06:18 Sven Eckelmann wrote:
> The batadv_hardif_neigh_free_ref function uses call_rcu to delay the free
> of the batadv_bla_claim object until no (already started) rcu_read_lock is
> enabled anymore. This makes sure that no context is still trying to access
> the object which should be removed. But batadv_bla_claim also contains a
> reference to backbone_gw which must be removed.
>
> The reference drop of backbone_gw was done in the call_rcu function
> batadv_claim_free_rcu but should actually be done in the
> batadv_claim_release function to avoid nested call_rcus. This is important
> because rcu_barrier (e.g. batadv_softif_free or batadv_exit) will not
> detect the inner call_rcu as relevant for its execution. Otherwise this
> barrier will most likely be inserted in the queue before the callback of
> the first call_rcu was executed. The caller of rcu_barrier will therefore
> continue to run before the inner call_rcu callback finished.
>
> Fixes: a9ce0dc43e2c ("batman-adv: add basic bridge loop avoidance code")
> Signed-off-by: Sven Eckelmann <sven@narfation.org>

Looks good!

Acked-by: Simon Wunderlich <sw@simonwunderlich.de>

Thanks,
Simon

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 181 bytes --]