{
        struct devlink_nl_dump_state *state = devlink_dump_state(cb);
        struct devlink *devlink;
-       struct devlink_sb *devlink_sb;
-       unsigned long index;
-       int idx = 0;
        int err = 0;
 
-       devlinks_xa_for_each_registered_get(sock_net(msg->sk), index, devlink) {
+       devlink_dump_for_each_instance_get(msg, state, devlink) {
+               struct devlink_sb *devlink_sb;
+               int idx = 0;
+
                if (!devlink->ops->sb_pool_get)
                        goto retry;
 
                        } else if (err) {
                                devl_unlock(devlink);
                                devlink_put(devlink);
+                               state->idx = idx;
                                goto out;
                        }
                }
        if (err != -EMSGSIZE)
                return err;
 
-       state->idx = idx;
        return msg->len;
 }
 
 {
        struct devlink_nl_dump_state *state = devlink_dump_state(cb);
        struct devlink *devlink;
-       struct devlink_sb *devlink_sb;
-       unsigned long index;
-       int idx = 0;
        int err = 0;
 
-       devlinks_xa_for_each_registered_get(sock_net(msg->sk), index, devlink) {
+       devlink_dump_for_each_instance_get(msg, state, devlink) {
+               struct devlink_sb *devlink_sb;
+               int idx = 0;
+
                if (!devlink->ops->sb_port_pool_get)
                        goto retry;
 
                        } else if (err) {
                                devl_unlock(devlink);
                                devlink_put(devlink);
+                               state->idx = idx;
                                goto out;
                        }
                }
        if (err != -EMSGSIZE)
                return err;
 
-       state->idx = idx;
        return msg->len;
 }
 
 {
        struct devlink_nl_dump_state *state = devlink_dump_state(cb);
        struct devlink *devlink;
-       struct devlink_sb *devlink_sb;
-       unsigned long index;
-       int idx = 0;
        int err = 0;
 
-       devlinks_xa_for_each_registered_get(sock_net(msg->sk), index, devlink) {
+       devlink_dump_for_each_instance_get(msg, state, devlink) {
+               struct devlink_sb *devlink_sb;
+               int idx = 0;
+
                if (!devlink->ops->sb_tc_pool_bind_get)
                        goto retry;
 
                        } else if (err) {
                                devl_unlock(devlink);
                                devlink_put(devlink);
+                               state->idx = idx;
                                goto out;
                        }
                }
        if (err != -EMSGSIZE)
                return err;
 
-       state->idx = idx;
        return msg->len;
 }
 
 {
        struct devlink_nl_dump_state *state = devlink_dump_state(cb);
        struct devlink *devlink;
-       unsigned long index;
-       int idx = 0;
        int err = 0;
 
-       devlinks_xa_for_each_registered_get(sock_net(msg->sk), index, devlink) {
+       devlink_dump_for_each_instance_get(msg, state, devlink) {
+               int idx = 0;
+
                err = devlink_nl_cmd_region_get_devlink_dumpit(msg, cb, devlink,
                                                               &idx, state->idx);
                devlink_put(devlink);
-               if (err)
+               if (err) {
+                       state->idx = idx;
                        goto out;
+               }
        }
 out:
-       state->idx = idx;
        return msg->len;
 }