Now that site info is optional, abstract it so we can manage it more
flexibly later.  Change all site users to use ddebug_site_get(p)
instead, which just returns ->site.  ddebug_site_put is called to
balance gets, it currently does nothing.

no functional changes.

Signed-off-by: Jim Cromie <jim.cro...@gmail.com>
---
 lib/dynamic_debug.c | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index 8ad9be28f38e..25f49515c235 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -144,6 +144,14 @@ static void vpr_info_dq(const struct ddebug_query *query, 
const char *msg)
                 query->first_lineno, query->last_lineno);
 }
 
+static struct _ddebug_callsite *ddebug_site_get(struct _ddebug *dp)
+{
+       return dp->site;
+}
+static inline void ddebug_site_put(struct _ddebug *dp)
+{
+}
+
 static int ddebug_match_site(const struct ddebug_query *query,
                             const struct _ddebug *dp,
                             const struct _ddebug_callsite *dc)
@@ -242,13 +250,13 @@ static int ddebug_change(const struct ddebug_query *query,
                        struct _ddebug_callsite *dc = dp->site;
 
                        if (!ddebug_match_site(query, dp, dc))
-                               continue;
+                               goto skipsite;
 
                        nfound++;
 
                        newflags = (dp->flags & modifiers->mask) | 
modifiers->flags;
                        if (newflags == dp->flags)
-                               continue;
+                               goto skipsite;
 
                        ddebug_alter_site(dp, modifiers);
 
@@ -264,6 +272,9 @@ static int ddebug_change(const struct ddebug_query *query,
                                          dt->mod_name, dp->lineno,
                                          ddebug_describe_flags(dp->flags, 
&fbuf),
                                          dp->format);
+
+               skipsite:
+                       ddebug_site_put(dp);
                }
        }
        mutex_unlock(&ddebug_lock);
@@ -633,11 +644,11 @@ static int remaining(int wrote)
        return 0;
 }
 
-static char *__dynamic_emit_prefix(const struct _ddebug *dp, char *buf)
+static char *__dynamic_emit_prefix(struct _ddebug *dp, char *buf)
 {
        int pos_after_tid;
        int pos = 0;
-       const struct _ddebug_callsite *desc = dp->site;
+       const struct _ddebug_callsite *desc;
 
        *buf = '\0';
 
@@ -653,6 +664,7 @@ static char *__dynamic_emit_prefix(const struct _ddebug 
*dp, char *buf)
        if (!(dp->flags & _DPRINTK_FLAGS_INCL_ANYSITE))
                return buf;
 
+       desc = ddebug_site_get(dp);
        if (desc) {
                if (dp->flags & _DPRINTK_FLAGS_INCL_MODNAME)
                        pos += snprintf(buf + pos, remaining(pos), "%s:",
@@ -670,6 +682,8 @@ static char *__dynamic_emit_prefix(const struct _ddebug 
*dp, char *buf)
        if (pos >= PREFIX_SIZE)
                buf[PREFIX_SIZE - 1] = '\0';
 
+       ddebug_site_put(dp);
+
        return buf;
 }
 
@@ -952,7 +966,8 @@ static int ddebug_proc_show(struct seq_file *m, void *p)
                return 0;
        }
 
-       dc = dp->site;
+       dc = ddebug_site_get(dp);
+
        if (dc) {
                seq_printf(m, "%s:%u [%s]%s =%s \"",
                           trim_prefix(dc->filename), dp->lineno,
@@ -968,6 +983,8 @@ static int ddebug_proc_show(struct seq_file *m, void *p)
                seq_puts(m, "\"\n");
        }
 
+       ddebug_site_put(dp);
+
        return 0;
 }
 
-- 
2.29.2

Reply via email to