{
        struct sock_map_seq_info *info = priv_data;
 
+       bpf_map_inc_with_uref(aux->map);
        info->map = aux->map;
        return 0;
 }
 
+static void sock_map_fini_seq_private(void *priv_data)
+{
+       struct sock_map_seq_info *info = priv_data;
+
+       bpf_map_put_with_uref(info->map);
+}
+
 static const struct bpf_iter_seq_info sock_map_iter_seq_info = {
        .seq_ops                = &sock_map_seq_ops,
        .init_seq_private       = sock_map_init_seq_private,
+       .fini_seq_private       = sock_map_fini_seq_private,
        .seq_priv_size          = sizeof(struct sock_map_seq_info),
 };
 
 };
 
 static int sock_hash_init_seq_private(void *priv_data,
-                                    struct bpf_iter_aux_info *aux)
+                                     struct bpf_iter_aux_info *aux)
 {
        struct sock_hash_seq_info *info = priv_data;
 
+       bpf_map_inc_with_uref(aux->map);
        info->map = aux->map;
        info->htab = container_of(aux->map, struct bpf_shtab, map);
        return 0;
 }
 
+static void sock_hash_fini_seq_private(void *priv_data)
+{
+       struct sock_hash_seq_info *info = priv_data;
+
+       bpf_map_put_with_uref(info->map);
+}
+
 static const struct bpf_iter_seq_info sock_hash_iter_seq_info = {
        .seq_ops                = &sock_hash_seq_ops,
        .init_seq_private       = sock_hash_init_seq_private,
+       .fini_seq_private       = sock_hash_fini_seq_private,
        .seq_priv_size          = sizeof(struct sock_hash_seq_info),
 };