lkml.org 
[lkml]   [2020]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 61/90] batman-adv: Fix lock for ogm cnt access in batadv_iv_ogm_calc_tq
    Date
    From: Sven Eckelmann <sven@narfation.org>

    commit 5ba7dcfe77037b67016263ea597a8b431692ecab upstream.

    The originator node object orig_neigh_node is used to when accessing the
    bcast_own(_sum) and real_packet_count information. The access to them has
    to be protected with the spinlock in orig_neigh_node.

    But the function uses the lock in orig_node instead. This is incorrect
    because they could be two different originator node objects.

    Fixes: 0ede9f41b217 ("batman-adv: protect bit operations to count OGMs with spinlock")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/batman-adv/bat_iv_ogm.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/net/batman-adv/bat_iv_ogm.c
    +++ b/net/batman-adv/bat_iv_ogm.c
    @@ -1227,7 +1227,7 @@ static bool batadv_iv_ogm_calc_tq(struct
    orig_node->last_seen = jiffies;

    /* find packet count of corresponding one hop neighbor */
    - spin_lock_bh(&orig_node->bat_iv.ogm_cnt_lock);
    + spin_lock_bh(&orig_neigh_node->bat_iv.ogm_cnt_lock);
    if_num = if_incoming->if_num;
    orig_eq_count = orig_neigh_node->bat_iv.bcast_own_sum[if_num];
    neigh_ifinfo = batadv_neigh_ifinfo_new(neigh_node, if_outgoing);
    @@ -1237,7 +1237,7 @@ static bool batadv_iv_ogm_calc_tq(struct
    } else {
    neigh_rq_count = 0;
    }
    - spin_unlock_bh(&orig_node->bat_iv.ogm_cnt_lock);
    + spin_unlock_bh(&orig_neigh_node->bat_iv.ogm_cnt_lock);

    /* pay attention to not get a value bigger than 100 % */
    if (orig_eq_count > neigh_rq_count)

    \
     
     \ /
      Last update: 2020-03-19 14:35    [W:4.446 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site