The callers of these functions are all within RCU locked sections

Signed-off-by: Felix Fietkau <[email protected]>
---
 net/mac80211/mesh_hwmp.c    | 26 +++++++-------------------
 net/mac80211/mesh_pathtbl.c |  2 +-
 2 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c
index f7517668e77a..dcbca7c8c67d 100644
--- a/net/mac80211/mesh_hwmp.c
+++ b/net/mac80211/mesh_hwmp.c
@@ -1130,16 +1130,13 @@ int mesh_nexthop_resolve(struct ieee80211_sub_if_data 
*sdata,
        struct mesh_path *mpath;
        struct sk_buff *skb_to_free = NULL;
        u8 *target_addr = hdr->addr3;
-       int err = 0;
 
        /* Nulls are only sent to peers for PS and should be pre-addressed */
        if (ieee80211_is_qos_nullfunc(hdr->frame_control))
                return 0;
 
-       rcu_read_lock();
-       err = mesh_nexthop_lookup(sdata, skb);
-       if (!err)
-               goto endlookup;
+       if (!mesh_nexthop_lookup(sdata, skb))
+               return 0;
 
        /* no nexthop found, start resolving */
        mpath = mesh_path_lookup(sdata, target_addr);
@@ -1147,8 +1144,7 @@ int mesh_nexthop_resolve(struct ieee80211_sub_if_data 
*sdata,
                mpath = mesh_path_add(sdata, target_addr);
                if (IS_ERR(mpath)) {
                        mesh_path_discard_frame(sdata, skb);
-                       err = PTR_ERR(mpath);
-                       goto endlookup;
+                       return PTR_ERR(mpath);
                }
        }
 
@@ -1161,13 +1157,10 @@ int mesh_nexthop_resolve(struct ieee80211_sub_if_data 
*sdata,
        info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING;
        ieee80211_set_qos_hdr(sdata, skb);
        skb_queue_tail(&mpath->frame_queue, skb);
-       err = -ENOENT;
        if (skb_to_free)
                mesh_path_discard_frame(sdata, skb_to_free);
 
-endlookup:
-       rcu_read_unlock();
-       return err;
+       return -ENOENT;
 }
 
 /**
@@ -1187,13 +1180,10 @@ int mesh_nexthop_lookup(struct ieee80211_sub_if_data 
*sdata,
        struct sta_info *next_hop;
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
        u8 *target_addr = hdr->addr3;
-       int err = -ENOENT;
 
-       rcu_read_lock();
        mpath = mesh_path_lookup(sdata, target_addr);
-
        if (!mpath || !(mpath->flags & MESH_PATH_ACTIVE))
-               goto endlookup;
+               return -ENOENT;
 
        if (time_after(jiffies,
                       mpath->exp_time -
@@ -1208,12 +1198,10 @@ int mesh_nexthop_lookup(struct ieee80211_sub_if_data 
*sdata,
                memcpy(hdr->addr1, next_hop->sta.addr, ETH_ALEN);
                memcpy(hdr->addr2, sdata->vif.addr, ETH_ALEN);
                ieee80211_mps_set_frame_flags(sdata, next_hop, hdr);
-               err = 0;
+               return 0;
        }
 
-endlookup:
-       rcu_read_unlock();
-       return err;
+       return -ENOENT;
 }
 
 void mesh_path_timer(struct timer_list *t)
diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c
index 0a1148328f19..498bf580bff4 100644
--- a/net/mac80211/mesh_pathtbl.c
+++ b/net/mac80211/mesh_pathtbl.c
@@ -219,7 +219,7 @@ static struct mesh_path *mpath_lookup(struct mesh_table 
*tbl, const u8 *dst,
 {
        struct mesh_path *mpath;
 
-       mpath = rhashtable_lookup_fast(&tbl->rhead, dst, mesh_rht_params);
+       mpath = rhashtable_lookup(&tbl->rhead, dst, mesh_rht_params);
 
        if (mpath && mpath_expired(mpath)) {
                spin_lock_bh(&mpath->state_lock);
-- 
2.17.0

Reply via email to