]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
kprobes: Remove unneeded goto
authorMasami Hiramatsu (Google) <mhiramat@kernel.org>
Thu, 19 Mar 2026 13:39:12 +0000 (09:39 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Mar 2026 10:08:48 +0000 (11:08 +0100)
[ Upstream commit 5e5b8b49335971b68b54afeb0e7ded004945af07 ]

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>
Stable-dep-of: 5ef268cb7a0a ("kprobes: Remove unneeded warnings from __arm_kprobe_ftrace()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
kernel/kprobes.c

index e91dd6c09ebb44d50b28e872afe029a46021ff59..961f24dc072a118853990f8528b792808194dcf3 100644 (file)
@@ -1082,20 +1082,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)
@@ -1456,7 +1454,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) {
                /*
@@ -1486,11 +1484,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)
@@ -1513,15 +1510,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;
 }
 
 /*