diff options
author | David S. Miller <davem@davemloft.net> | 2016-01-17 06:01:51 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-01-17 06:01:51 (GMT) |
commit | 78c5b2c66758f2dad354fcc59c529954e07f078e (patch) | |
tree | 6d7d64bc6e77a67f067c87b1cc1c58d364738790 /net/batman-adv/originator.h | |
parent | 6c3f5aef1159a278b54642ebc0bbb5cdab7630cf (diff) | |
parent | 42eff6a617e23b691f8e4467f4687ed7245a92db (diff) | |
download | linux-78c5b2c66758f2dad354fcc59c529954e07f078e.tar.xz |
Merge tag 'batman-adv-fix-for-davem' of git://git.open-mesh.org/linux-merge
Antonio Quartulli says:
====================
pull request [net]: batman-adv 20160117
here you have a bunch of patches intended for net.
This patchset is provided by Sven Eckelmann and it is basically
fixing 2 major issues that exist in several parts of the code -
that is why we have 8 patches.
The first bugfix (patch 1 and 2) is preventing call_rcu from
being invoked recursively. This would deceive any user waiting
on rcu_barrier() because the latter won't be able to wait for
the nested invocation thus triggering any sort of undefined
behaviours.
The second bugfix (patches from 3 to 8) prevents the code from
freeing rcu protected objects without waiting for the proper grace
period. This issue can potentially lead to wrong memory access
and thus kernel crashes.
Unfortunately this bogus code pattern was copy/pasted
all around the place when developing new features, therefore
Sven diligently created several patches to address each component
independently.
Given that such bugs were introduced quite some time ago, all
the patches except patch 5 should be considered for submission
to stable.
Included changes:
- avoid recursive invocations of call_rcu() which would fool users waiting on
rcu_barrier()
- prevent immediate kfree of objects used in rcu protected contexts
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/batman-adv/originator.h')
-rw-r--r-- | net/batman-adv/originator.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/net/batman-adv/originator.h b/net/batman-adv/originator.h index 2955775..cf07304 100644 --- a/net/batman-adv/originator.h +++ b/net/batman-adv/originator.h @@ -38,7 +38,6 @@ int batadv_originator_init(struct batadv_priv *bat_priv); void batadv_originator_free(struct batadv_priv *bat_priv); void batadv_purge_orig_ref(struct batadv_priv *bat_priv); void batadv_orig_node_free_ref(struct batadv_orig_node *orig_node); -void batadv_orig_node_free_ref_now(struct batadv_orig_node *orig_node); struct batadv_orig_node *batadv_orig_node_new(struct batadv_priv *bat_priv, const u8 *addr); struct batadv_hardif_neigh_node * |