static void *saved_tgids_next(struct seq_file *m, void *v, loff_t *pos)
 {
-       int *ptr = v;
+       int pid = ++(*pos);
 
-       if (*pos || m->count)
-               ptr++;
-
-       (*pos)++;
-
-       for (; ptr <= &tgid_map[PID_MAX_DEFAULT]; ptr++) {
-               if (trace_find_tgid(*ptr))
-                       return ptr;
-       }
+       if (pid > PID_MAX_DEFAULT)
+               return NULL;
 
-       return NULL;
+       return &tgid_map[pid];
 }
 
 static void *saved_tgids_start(struct seq_file *m, loff_t *pos)
 {
-       void *v;
-       loff_t l = 0;
-
-       if (!tgid_map)
+       if (!tgid_map || *pos > PID_MAX_DEFAULT)
                return NULL;
 
-       v = &tgid_map[0];
-       while (l <= *pos) {
-               v = saved_tgids_next(m, v, &l);
-               if (!v)
-                       return NULL;
-       }
-
-       return v;
+       return &tgid_map[*pos];
 }
 
 static void saved_tgids_stop(struct seq_file *m, void *v)
 
 static int saved_tgids_show(struct seq_file *m, void *v)
 {
-       int pid = (int *)v - tgid_map;
+       int *entry = (int *)v;
+       int pid = entry - tgid_map;
+       int tgid = *entry;
+
+       if (tgid == 0)
+               return SEQ_SKIP;
 
-       seq_printf(m, "%d %d\n", pid, trace_find_tgid(pid));
+       seq_printf(m, "%d %d\n", pid, tgid);
        return 0;
 }