Commit 773beabb authored by Jim Cromie's avatar Jim Cromie Committed by Greg Kroah-Hartman

dyndbg: reverse module.callsite walk in cat control

Walk the module's vector of callsites backwards; ie N..0.  This
"corrects" the backwards appearance of a module's prdbg vector when
walked 0..N.  I think this is due to linker mechanics, which I'm
inclined to treat as immutable, and the order is fixable in display.

No functional changes.

Combined with previous commit, which reversed tables-list, we get:

  :#> head -n7 /proc/dynamic_debug/control
  # filename:lineno [module]function flags format
  init/main.c:1179 [main]initcall_blacklist =_ "blacklisting initcall %s\012"
  init/main.c:1218 [main]initcall_blacklisted =_ "initcall %s blacklisted\012"
  init/main.c:1424 [main]run_init_process =_ "  with arguments:\012"
  init/main.c:1426 [main]run_init_process =_ "    %s\012"
  init/main.c:1427 [main]run_init_process =_ "  with environment:\012"
  init/main.c:1429 [main]run_init_process =_ "    %s\012"
Acked-by: default avatarJason Baron <jbaron@akamai.com>
Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarJim Cromie <jim.cromie@gmail.com>
Link: https://lore.kernel.org/r/20220904214134.408619-6-jim.cromie@gmail.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2ad556f7
...@@ -59,7 +59,7 @@ struct ddebug_query { ...@@ -59,7 +59,7 @@ struct ddebug_query {
struct ddebug_iter { struct ddebug_iter {
struct ddebug_table *table; struct ddebug_table *table;
unsigned int idx; int idx;
}; };
struct flag_settings { struct flag_settings {
...@@ -805,13 +805,12 @@ static struct _ddebug *ddebug_iter_first(struct ddebug_iter *iter) ...@@ -805,13 +805,12 @@ static struct _ddebug *ddebug_iter_first(struct ddebug_iter *iter)
{ {
if (list_empty(&ddebug_tables)) { if (list_empty(&ddebug_tables)) {
iter->table = NULL; iter->table = NULL;
iter->idx = 0;
return NULL; return NULL;
} }
iter->table = list_entry(ddebug_tables.next, iter->table = list_entry(ddebug_tables.next,
struct ddebug_table, link); struct ddebug_table, link);
iter->idx = 0; iter->idx = iter->table->num_ddebugs;
return &iter->table->ddebugs[iter->idx]; return &iter->table->ddebugs[--iter->idx];
} }
/* /*
...@@ -824,15 +823,16 @@ static struct _ddebug *ddebug_iter_next(struct ddebug_iter *iter) ...@@ -824,15 +823,16 @@ static struct _ddebug *ddebug_iter_next(struct ddebug_iter *iter)
{ {
if (iter->table == NULL) if (iter->table == NULL)
return NULL; return NULL;
if (++iter->idx == iter->table->num_ddebugs) { if (--iter->idx < 0) {
/* iterate to next table */ /* iterate to next table */
iter->idx = 0;
if (list_is_last(&iter->table->link, &ddebug_tables)) { if (list_is_last(&iter->table->link, &ddebug_tables)) {
iter->table = NULL; iter->table = NULL;
return NULL; return NULL;
} }
iter->table = list_entry(iter->table->link.next, iter->table = list_entry(iter->table->link.next,
struct ddebug_table, link); struct ddebug_table, link);
iter->idx = iter->table->num_ddebugs;
--iter->idx;
} }
return &iter->table->ddebugs[iter->idx]; return &iter->table->ddebugs[iter->idx];
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment