]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
kprobes: Remove unneeded goto
authorMasami Hiramatsu (Google) <mhiramat@kernel.org>
Mon, 9 Dec 2024 02:41:52 +0000 (11:41 +0900)
committerMasami Hiramatsu (Google) <mhiramat@kernel.org>
Fri, 10 Jan 2025 00:00:13 +0000 (09:00 +0900)
Remove unneeded gotos. Since the labels referred by these gotos have
only one reference for each, we can replace those gotos with the
referred code.

Link: https://lore.kernel.org/all/173371211203.480397.13988907319659165160.stgit@devnote2/
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
kernel/kprobes.c

index a24587e8f91aa74a285bbbb8db8f4c49e87a2701..34cbbb2206f49306260bcce74d8d444fe51079f0 100644 (file)
@@ -1071,20 +1071,18 @@ static int __arm_kprobe_ftrace(struct kprobe *p, struct ftrace_ops *ops,
 
        if (*cnt == 0) {
                ret = register_ftrace_function(ops);
-               if (WARN(ret < 0, "Failed to register kprobe-ftrace (error %d)\n", ret))
-                       goto err_ftrace;
+               if (WARN(ret < 0, "Failed to register kprobe-ftrace (error %d)\n", ret)) {
+                       /*
+                        * At this point, sinec ops is not registered, we should be sefe from
+                        * registering empty filter.
+                        */
+                       ftrace_set_filter_ip(ops, (unsigned long)p->addr, 1, 0);
+                       return ret;
+               }
        }
 
        (*cnt)++;
        return ret;
-
-err_ftrace:
-       /*
-        * At this point, sinec ops is not registered, we should be sefe from
-        * registering empty filter.
-        */
-       ftrace_set_filter_ip(ops, (unsigned long)p->addr, 1, 0);
-       return ret;
 }
 
 static int arm_kprobe_ftrace(struct kprobe *p)
@@ -1428,7 +1426,7 @@ _kprobe_addr(kprobe_opcode_t *addr, const char *symbol_name,
             unsigned long offset, bool *on_func_entry)
 {
        if ((symbol_name && addr) || (!symbol_name && !addr))
-               goto invalid;
+               return ERR_PTR(-EINVAL);
 
        if (symbol_name) {
                /*
@@ -1458,11 +1456,10 @@ _kprobe_addr(kprobe_opcode_t *addr, const char *symbol_name,
         * at the start of the function.
         */
        addr = arch_adjust_kprobe_addr((unsigned long)addr, offset, on_func_entry);
-       if (addr)
-               return addr;
+       if (!addr)
+               return ERR_PTR(-EINVAL);
 
-invalid:
-       return ERR_PTR(-EINVAL);
+       return addr;
 }
 
 static kprobe_opcode_t *kprobe_addr(struct kprobe *p)
@@ -1486,15 +1483,15 @@ static struct kprobe *__get_valid_kprobe(struct kprobe *p)
        if (unlikely(!ap))
                return NULL;
 
-       if (p != ap) {
-               list_for_each_entry(list_p, &ap->list, list)
-                       if (list_p == p)
-                       /* kprobe p is a valid probe */
-                               goto valid;
-               return NULL;
-       }
-valid:
-       return ap;
+       if (p == ap)
+               return ap;
+
+       list_for_each_entry(list_p, &ap->list, list)
+               if (list_p == p)
+               /* kprobe p is a valid probe */
+                       return ap;
+
+       return NULL;
 }
 
 /*