|
@@ -196,19 +196,21 @@ static void *map_seq_next(struct seq_file *m, void *v, loff_t *pos)
|
|
|
{
|
|
{
|
|
|
struct bpf_map *map = seq_file_to_map(m);
|
|
struct bpf_map *map = seq_file_to_map(m);
|
|
|
void *key = map_iter(m)->key;
|
|
void *key = map_iter(m)->key;
|
|
|
|
|
+ void *prev_key;
|
|
|
|
|
|
|
|
if (map_iter(m)->done)
|
|
if (map_iter(m)->done)
|
|
|
return NULL;
|
|
return NULL;
|
|
|
|
|
|
|
|
if (unlikely(v == SEQ_START_TOKEN))
|
|
if (unlikely(v == SEQ_START_TOKEN))
|
|
|
- goto done;
|
|
|
|
|
|
|
+ prev_key = NULL;
|
|
|
|
|
+ else
|
|
|
|
|
+ prev_key = key;
|
|
|
|
|
|
|
|
- if (map->ops->map_get_next_key(map, key, key)) {
|
|
|
|
|
|
|
+ if (map->ops->map_get_next_key(map, prev_key, key)) {
|
|
|
map_iter(m)->done = true;
|
|
map_iter(m)->done = true;
|
|
|
return NULL;
|
|
return NULL;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-done:
|
|
|
|
|
++(*pos);
|
|
++(*pos);
|
|
|
return key;
|
|
return key;
|
|
|
}
|
|
}
|