void *flow_node;
        int rc, i;
 
-       rc = rhashtable_walk_start(iter);
-       if (rc && rc != -EAGAIN) {
-               i = 0;
-               goto done;
-       }
+       rhashtable_walk_start(iter);
 
        rc = 0;
        for (i = 0; i < BNXT_FLOW_STATS_BATCH_MAX; i++) {
 
 
        rhashtable_walk_enter(&adap->flower_tbl, &iter);
        do {
-               flower_entry = ERR_PTR(rhashtable_walk_start(&iter));
-               if (IS_ERR(flower_entry))
-                       goto walk_stop;
+               rhashtable_walk_start(&iter);
 
                while ((flower_entry = rhashtable_walk_next(&iter)) &&
                       !IS_ERR(flower_entry)) {
                                spin_unlock(&flower_entry->lock);
                        }
                }
-walk_stop:
+
                rhashtable_walk_stop(&iter);
+
        } while (flower_entry == ERR_PTR(-EAGAIN));
        rhashtable_walk_exit(&iter);
        mod_timer(&adap->flower_stats_timer, jiffies + STATS_CHECK_PERIOD);
 
        rhashtable_walk_enter(&gl_hash_table, &iter);
 
        do {
-               gl = ERR_PTR(rhashtable_walk_start(&iter));
-               if (IS_ERR(gl))
-                       goto walk_stop;
+               rhashtable_walk_start(&iter);
 
                while ((gl = rhashtable_walk_next(&iter)) && !IS_ERR(gl))
                        if (gl->gl_name.ln_sbd == sdp &&
                            lockref_get_not_dead(&gl->gl_lockref))
                                examiner(gl);
 
-walk_stop:
                rhashtable_walk_stop(&iter);
        } while (cond_resched(), gl == ERR_PTR(-EAGAIN));
 
        loff_t n = *pos;
 
        rhashtable_walk_enter(&gl_hash_table, &gi->hti);
-       if (rhashtable_walk_start(&gi->hti) != 0)
+       if (rhashtable_walk_start_check(&gi->hti) != 0)
                return NULL;
 
        do {
 
 void rhashtable_walk_enter(struct rhashtable *ht,
                           struct rhashtable_iter *iter);
 void rhashtable_walk_exit(struct rhashtable_iter *iter);
-int rhashtable_walk_start(struct rhashtable_iter *iter) __acquires(RCU);
+int rhashtable_walk_start_check(struct rhashtable_iter *iter) __acquires(RCU);
+
+static inline void rhashtable_walk_start(struct rhashtable_iter *iter)
+{
+       (void)rhashtable_walk_start_check(iter);
+}
+
 void *rhashtable_walk_next(struct rhashtable_iter *iter);
 void rhashtable_walk_stop(struct rhashtable_iter *iter) __releases(RCU);
 
 
 int sctp_asconf_mgmt(struct sctp_sock *, struct sctp_sockaddr_entry *);
 struct sk_buff *sctp_skb_recv_datagram(struct sock *, int, int, int *);
 
-int sctp_transport_walk_start(struct rhashtable_iter *iter);
+void sctp_transport_walk_start(struct rhashtable_iter *iter);
 void sctp_transport_walk_stop(struct rhashtable_iter *iter);
 struct sctp_transport *sctp_transport_get_next(struct net *net,
                        struct rhashtable_iter *iter);
 
 EXPORT_SYMBOL_GPL(rhashtable_walk_exit);
 
 /**
- * rhashtable_walk_start - Start a hash table walk
+ * rhashtable_walk_start_check - Start a hash table walk
  * @iter:      Hash table iterator
  *
  * Start a hash table walk at the current iterator position.  Note that we take
  * Returns -EAGAIN if resize event occured.  Note that the iterator
  * will rewind back to the beginning and you may use it immediately
  * by calling rhashtable_walk_next.
+ *
+ * rhashtable_walk_start is defined as an inline variant that returns
+ * void. This is preferred in cases where the caller would ignore
+ * resize events and always continue.
  */
-int rhashtable_walk_start(struct rhashtable_iter *iter)
+int rhashtable_walk_start_check(struct rhashtable_iter *iter)
        __acquires(RCU)
 {
        struct rhashtable *ht = iter->ht;
 
        return 0;
 }
-EXPORT_SYMBOL_GPL(rhashtable_walk_start);
+EXPORT_SYMBOL_GPL(rhashtable_walk_start_check);
 
 /**
  * rhashtable_walk_next - Return the next object and advance the iterator
 
                return;
        }
 
-       err = rhashtable_walk_start(&hti);
-       if (err && err != -EAGAIN) {
-               pr_warn("Test failed: iterator failed: %d\n", err);
-               return;
-       }
+       rhashtable_walk_start(&hti);
 
        while ((pos = rhashtable_walk_next(&hti))) {
                if (PTR_ERR(pos) == -EAGAIN) {
 
        struct ila_map *ila;
        int ret;
 
-       ret = rhashtable_walk_start(rhiter);
-       if (ret && ret != -EAGAIN)
-               goto done;
+       rhashtable_walk_start(rhiter);
 
        for (;;) {
                ila = rhashtable_walk_next(rhiter);
 
        struct seg6_hmac_info *hinfo;
        int ret;
 
-       ret = rhashtable_walk_start(iter);
-       if (ret && ret != -EAGAIN)
-               goto done;
+       rhashtable_walk_start(iter);
 
        for (;;) {
                hinfo = rhashtable_walk_next(iter);
 
        if (ret)
                return NULL;
 
-       ret = rhashtable_walk_start(&iter);
-       if (ret && ret != -EAGAIN)
-               goto err;
+       rhashtable_walk_start(&iter);
 
        while ((mpath = rhashtable_walk_next(&iter))) {
                if (IS_ERR(mpath) && PTR_ERR(mpath) == -EAGAIN)
                if (i++ == idx)
                        break;
        }
-err:
        rhashtable_walk_stop(&iter);
        rhashtable_walk_exit(&iter);
 
        if (ret)
                return;
 
-       ret = rhashtable_walk_start(&iter);
-       if (ret && ret != -EAGAIN)
-               goto out;
+       rhashtable_walk_start(&iter);
 
        while ((mpath = rhashtable_walk_next(&iter))) {
                if (IS_ERR(mpath) && PTR_ERR(mpath) == -EAGAIN)
                                WLAN_REASON_MESH_PATH_DEST_UNREACHABLE, bcast);
                }
        }
-out:
        rhashtable_walk_stop(&iter);
        rhashtable_walk_exit(&iter);
 }
        if (ret)
                return;
 
-       ret = rhashtable_walk_start(&iter);
-       if (ret && ret != -EAGAIN)
-               goto out;
+       rhashtable_walk_start(&iter);
 
        while ((mpath = rhashtable_walk_next(&iter))) {
                if (IS_ERR(mpath) && PTR_ERR(mpath) == -EAGAIN)
                if (rcu_access_pointer(mpath->next_hop) == sta)
                        __mesh_path_del(tbl, mpath);
        }
-out:
+
        rhashtable_walk_stop(&iter);
        rhashtable_walk_exit(&iter);
 }
        if (ret)
                return;
 
-       ret = rhashtable_walk_start(&iter);
-       if (ret && ret != -EAGAIN)
-               goto out;
+       rhashtable_walk_start(&iter);
 
        while ((mpath = rhashtable_walk_next(&iter))) {
                if (IS_ERR(mpath) && PTR_ERR(mpath) == -EAGAIN)
                if (ether_addr_equal(mpath->mpp, proxy))
                        __mesh_path_del(tbl, mpath);
        }
-out:
+
        rhashtable_walk_stop(&iter);
        rhashtable_walk_exit(&iter);
 }
        if (ret)
                return;
 
-       ret = rhashtable_walk_start(&iter);
-       if (ret && ret != -EAGAIN)
-               goto out;
+       rhashtable_walk_start(&iter);
 
        while ((mpath = rhashtable_walk_next(&iter))) {
                if (IS_ERR(mpath) && PTR_ERR(mpath) == -EAGAIN)
                        break;
                __mesh_path_del(tbl, mpath);
        }
-out:
+
        rhashtable_walk_stop(&iter);
        rhashtable_walk_exit(&iter);
 }
        if (ret)
                return;
 
-       ret = rhashtable_walk_start(&iter);
-       if (ret && ret != -EAGAIN)
-               goto out;
+       rhashtable_walk_start(&iter);
 
        while ((mpath = rhashtable_walk_next(&iter))) {
                if (IS_ERR(mpath) && PTR_ERR(mpath) == -EAGAIN)
                     time_after(jiffies, mpath->exp_time + MESH_PATH_EXPIRE))
                        __mesh_path_del(tbl, mpath);
        }
-out:
+
        rhashtable_walk_stop(&iter);
        rhashtable_walk_exit(&iter);
 }
 
        if (err)
                return;
 
-       err = rhashtable_walk_start(&hti);
-       if (err && err != -EAGAIN) {
-               iter->err = err;
-               goto out;
-       }
+       rhashtable_walk_start(&hti);
 
        while ((he = rhashtable_walk_next(&hti))) {
                if (IS_ERR(he)) {
        if (err)
                goto schedule;
 
-       err = rhashtable_walk_start(&hti);
-       if (err && err != -EAGAIN)
-               goto out;
+       rhashtable_walk_start(&hti);
 
        while ((he = rhashtable_walk_next(&hti))) {
                if (IS_ERR(he)) {
 
                return err;
        }
 
-       err = rhashtable_walk_start(&iter->hti);
-       return err == -EAGAIN ? 0 : err;
+       rhashtable_walk_start(&iter->hti);
+
+       return 0;
 }
 
 static void netlink_walk_stop(struct nl_seq_iter *iter)
 
        if (!s_num)
                rhashtable_walk_enter(&tbl->hash, hti);
 
-       ret = rhashtable_walk_start(hti);
-       if (ret == -EAGAIN)
-               ret = 0;
-       if (ret)
-               goto stop;
+       rhashtable_walk_start(hti);
 
        while ((nlsk = rhashtable_walk_next(hti))) {
                if (IS_ERR(nlsk)) {
                }
        }
 
-stop:
        rhashtable_walk_stop(hti);
+
        if (ret)
                goto done;
 
 
 static void *sctp_transport_seq_start(struct seq_file *seq, loff_t *pos)
 {
        struct sctp_ht_iter *iter = seq->private;
-       int err = sctp_transport_walk_start(&iter->hti);
 
-       if (err) {
-               iter->start_fail = 1;
-               return ERR_PTR(err);
-       }
+       sctp_transport_walk_start(&iter->hti);
 
        iter->start_fail = 0;
        return sctp_transport_get_idx(seq_file_net(seq), &iter->hti, *pos);
 
 EXPORT_SYMBOL_GPL(sctp_get_sctp_info);
 
 /* use callback to avoid exporting the core structure */
-int sctp_transport_walk_start(struct rhashtable_iter *iter)
+void sctp_transport_walk_start(struct rhashtable_iter *iter)
 {
-       int err;
-
        rhltable_walk_enter(&sctp_transport_hashtable, iter);
 
-       err = rhashtable_walk_start(iter);
-       if (err && err != -EAGAIN) {
-               rhashtable_walk_stop(iter);
-               rhashtable_walk_exit(iter);
-               return err;
-       }
-
-       return 0;
+       rhashtable_walk_start(iter);
 }
 
 void sctp_transport_walk_stop(struct rhashtable_iter *iter)
                            struct net *net, int *pos, void *p) {
        struct rhashtable_iter hti;
        struct sctp_transport *tsp;
-       int ret;
+       int ret = 0;
 
 again:
-       ret = sctp_transport_walk_start(&hti);
-       if (ret)
-               return ret;
+       sctp_transport_walk_start(&hti);
 
        tsp = sctp_transport_get_idx(net, &hti, *pos + 1);
        for (; !IS_ERR_OR_NULL(tsp); tsp = sctp_transport_get_next(net, &hti)) {
 
        rhashtable_walk_enter(&tn->sk_rht, &iter);
 
        do {
-               tsk = ERR_PTR(rhashtable_walk_start(&iter));
-               if (IS_ERR(tsk))
-                       goto walk_stop;
+               rhashtable_walk_start(&iter);
 
                while ((tsk = rhashtable_walk_next(&iter)) && !IS_ERR(tsk)) {
                        spin_lock_bh(&tsk->sk.sk_lock.slock);
                        msg_set_orignode(msg, tn->own_addr);
                        spin_unlock_bh(&tsk->sk.sk_lock.slock);
                }
-walk_stop:
+
                rhashtable_walk_stop(&iter);
        } while (tsk == ERR_PTR(-EAGAIN));
 }