From: Steven Rostedt <[email protected]>

The ftrace_lock is held for most of match_records() until the end of the
function. Use guard to make error paths simpler.

Signed-off-by: Steven Rostedt (Google) <[email protected]>
---
 kernel/trace/ftrace.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index e9fd4fb2769e..44adc34643c9 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -4829,15 +4829,13 @@ match_records(struct ftrace_hash *hash, char *func, int 
len, char *mod)
                mod_g.len = strlen(mod_g.search);
        }
 
-       mutex_lock(&ftrace_lock);
+       guard(mutex)(&ftrace_lock);
 
        if (unlikely(ftrace_disabled))
-               goto out_unlock;
+               return 0;
 
-       if (func_g.type == MATCH_INDEX) {
-               found = add_rec_by_index(hash, &func_g, clear_filter);
-               goto out_unlock;
-       }
+       if (func_g.type == MATCH_INDEX)
+               return add_rec_by_index(hash, &func_g, clear_filter);
 
        do_for_each_ftrace_rec(pg, rec) {
 
@@ -4846,16 +4844,12 @@ match_records(struct ftrace_hash *hash, char *func, int 
len, char *mod)
 
                if (ftrace_match_record(rec, &func_g, mod_match, exclude_mod)) {
                        ret = enter_record(hash, rec, clear_filter);
-                       if (ret < 0) {
-                               found = ret;
-                               goto out_unlock;
-                       }
+                       if (ret < 0)
+                               return ret;
                        found = 1;
                }
                cond_resched();
        } while_for_each_ftrace_rec();
- out_unlock:
-       mutex_unlock(&ftrace_lock);
 
        return found;
 }
-- 
2.45.2



Reply via email to