From patchwork Tue Jul 11 14:06:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 118560 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp516326vqm; Tue, 11 Jul 2023 07:21:04 -0700 (PDT) X-Google-Smtp-Source: APBJJlGO7fQpuR0aylb3MHGBAwPJsqgJqg4Anyuu48PZ++kvpfD+U+tBGT9pLCH51XdXnzQfCMWs X-Received: by 2002:a19:8c1e:0:b0:4fb:73ba:5d9c with SMTP id o30-20020a198c1e000000b004fb73ba5d9cmr11687668lfd.17.1689085264135; Tue, 11 Jul 2023 07:21:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689085264; cv=none; d=google.com; s=arc-20160816; b=IyIA9j6IBP3P8mbwluHbaI5MC4hwSc++Ivcq95z2SKSWpW4NVrCE2PIlmeLSk98UdF kUu+BiARUZZ3ziXVoW1qNcT/Q4PcQx2kLI+G/GAhRmB6irkVDKkWfLMql0ubO1veuX3f 1PW+ohMFJ7w9xnGrFIVJhiQ9ZAwsMPRrX7tQTjQ3VQCMbadniuFmhymIPNIqopuU4yt9 WdyiG9gfF9bOKMHbZ/3AidkZ1frXpgXo2Yhj8/pmrA4KlA1XVfTyibnLem3rkEkkpt5a eyE3stIR5tM0oPKOLxUQ7V011rEA+dpbACgT81g7boR34B2oLFeYJqkSgQzBz2wDuvpN zCEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=yUDWrsgesx3VD2jEQTrI0sQJOvv5Vo/2M3T+FgkO2GY=; fh=PbSDfFPWZgOEX51dPuGpo40lEYcroumT/3Jb/1CBElQ=; b=yjCwT+kCJ02UWO5oMqln3+oJbLtgRrkIqbvyNpf1vgp/+GDK/3NZ4TgN3fOErI1daS v/coppAOM3VBTkfsRpvOkdSWT00632MQh6Zr4GROJwgQOXglzPhJ2RECp3qqYAcKhx3T l3Cpy+mWYl84AZpP90g7+L7k3tinLpXkR9XWOPNYok/1M8GxMU5kCh+88qjM3TfhFyMQ SRZwwYS49mH4KfiHG1+MZxz5TqxJTg258jaxST+CKaovtsca3MbbMoa2vNGVArwNA/vH 2BmARL/PnjtB+oTrc6Cr4N18k1UcWvFczJ1LT2ShAqUi4sUGpxrRtf6Dm/El/q5r20wJ NCGg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x20-20020a170906711400b00993a68a3af4si1990753ejj.563.2023.07.11.07.20.36; Tue, 11 Jul 2023 07:21:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233318AbjGKOHW (ORCPT + 99 others); Tue, 11 Jul 2023 10:07:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45260 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233294AbjGKOHT (ORCPT ); Tue, 11 Jul 2023 10:07:19 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D17BE3; Tue, 11 Jul 2023 07:07:18 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 971EF6150B; Tue, 11 Jul 2023 14:07:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0C92DC433C7; Tue, 11 Jul 2023 14:07:17 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1qJE1L-0007lB-2z; Tue, 11 Jul 2023 10:07:15 -0400 Message-ID: <20230711140715.745095758@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 11 Jul 2023 10:06:53 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , stable@vger.kernel.org, Catalin Marinas , Florent Revest Subject: [for-linus][PATCH 1/5] samples: ftrace: Save required argument registers in sample trampolines References: <20230711140652.217008556@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771134269870311678 X-GMAIL-MSGID: 1771134269870311678 From: Florent Revest The ftrace-direct-too sample traces the handle_mm_fault function whose signature changed since the introduction of the sample. Since: commit bce617edecad ("mm: do page fault accounting in handle_mm_fault") handle_mm_fault now has 4 arguments. Therefore, the sample trampoline should save 4 argument registers. s390 saves all argument registers already so it does not need a change but x86_64 needs an extra push and pop. This also evolves the signature of the tracing function to make it mirror the signature of the traced function. Link: https://lkml.kernel.org/r/20230427140700.625241-2-revest@chromium.org Cc: stable@vger.kernel.org Fixes: bce617edecad ("mm: do page fault accounting in handle_mm_fault") Reviewed-by: Steven Rostedt (Google) Reviewed-by: Mark Rutland Acked-by: Catalin Marinas Signed-off-by: Florent Revest Signed-off-by: Steven Rostedt (Google) --- samples/ftrace/ftrace-direct-too.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/samples/ftrace/ftrace-direct-too.c b/samples/ftrace/ftrace-direct-too.c index a05bc2cc2261..7986033887f6 100644 --- a/samples/ftrace/ftrace-direct-too.c +++ b/samples/ftrace/ftrace-direct-too.c @@ -5,14 +5,14 @@ #include #include -extern void my_direct_func(struct vm_area_struct *vma, - unsigned long address, unsigned int flags); +extern void my_direct_func(struct vm_area_struct *vma, unsigned long address, + unsigned int flags, struct pt_regs *regs); -void my_direct_func(struct vm_area_struct *vma, - unsigned long address, unsigned int flags) +void my_direct_func(struct vm_area_struct *vma, unsigned long address, + unsigned int flags, struct pt_regs *regs) { - trace_printk("handle mm fault vma=%p address=%lx flags=%x\n", - vma, address, flags); + trace_printk("handle mm fault vma=%p address=%lx flags=%x regs=%p\n", + vma, address, flags, regs); } extern void my_tramp(void *); @@ -34,7 +34,9 @@ asm ( " pushq %rdi\n" " pushq %rsi\n" " pushq %rdx\n" +" pushq %rcx\n" " call my_direct_func\n" +" popq %rcx\n" " popq %rdx\n" " popq %rsi\n" " popq %rdi\n" From patchwork Tue Jul 11 14:06:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 118550 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp514056vqm; Tue, 11 Jul 2023 07:17:53 -0700 (PDT) X-Google-Smtp-Source: APBJJlG7XuPzPmJM+kkCHLfxL5NVa29X6uk4JbUnNmT2ID4SKAUtyRUZqrffJaJCc9fcxvxAw6Ya X-Received: by 2002:a17:906:3f13:b0:994:1806:fb96 with SMTP id c19-20020a1709063f1300b009941806fb96mr2717337ejj.16.1689085073119; Tue, 11 Jul 2023 07:17:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689085073; cv=none; d=google.com; s=arc-20160816; b=NiTfKu0Ciexf0yPzyO8Ibv6iMm6Nvng0MuwTnXwC/eNcFSZ37JA7lzudys7YaiV31p iIHtVFNnQqzorWZjN3laivEs63MwnLRBEYpSmw5gyJy1OVP4kV1BO/fFCVfv+zDwSeKC tYqA9MpZPf69CXhbBRH2Mx+NrrpdGTKoGeFsskJ7Hb15WzjMgdyzzoZNoqajYkk6VMjs LNjS+X/BOJi44gMUGxLuiRl9s/FO8LBhBd0iPKc4Uu553lc0tPNveRiVbr40c9r6Rpnd 61FJzSscS1UTQ2TTyZ09R4ISui7+fGb0iy8wkkOjpG7A8GcyTli4SqO3VjtlK8ePRktU /gLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=BU4yvY87Yda7rBJR/O4iAYpDNUyqJHCSwwQcoPV9os4=; fh=c/6/J39Y+93Y2NEhTeTp7FLFsb8b3Zl0FcO1z06ouyg=; b=SmSYFu7hAaN/itOlvJAdwGr/3ewc4JS+iU5E1UGRbUjVAr1qLe6IHrlaTgoHTO9Ftt xcGC6RVkSMXaUmt4r9i67sjpkjel0BbXOYYM/alG2bNiGi/Jr+yDBlYcu8lSXv94J7Kh O4FGISB8IcEnRCj5B9EveucPGz0bfvJZT/3WwoZnzb94/3ZG4r04xZbv9FBnjHNMQcdu MAthCT2Yx4Iq6EyFKzWeDwi3Oz6zbd8foJHyngnxK4vK8QFMsaHPpryqFRkc24m3T6P6 X7C3uPBxwUYVwCYfNLwEU6dVPknpkcfFUf9aLo0ax6Qzgw3laLH+iR5rmU+LsMr9lvKI rRHQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n23-20020a170906b31700b00991c8af7ba3si2035835ejz.148.2023.07.11.07.17.28; Tue, 11 Jul 2023 07:17:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233342AbjGKOH0 (ORCPT + 99 others); Tue, 11 Jul 2023 10:07:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233311AbjGKOHT (ORCPT ); Tue, 11 Jul 2023 10:07:19 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D6D7B0 for ; Tue, 11 Jul 2023 07:07:18 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id BD8F96150E for ; Tue, 11 Jul 2023 14:07:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1852AC433CA; Tue, 11 Jul 2023 14:07:17 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1qJE1M-0007lj-0Q; Tue, 11 Jul 2023 10:07:16 -0400 Message-ID: <20230711140715.945224101@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 11 Jul 2023 10:06:54 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Catalin Marinas , Florent Revest Subject: [for-linus][PATCH 2/5] arm64: ftrace: Add direct call trampoline samples support References: <20230711140652.217008556@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771134069439796634 X-GMAIL-MSGID: 1771134069439796634 From: Florent Revest The ftrace samples need per-architecture trampoline implementations to save and restore argument registers around the calls to my_direct_func* and to restore polluted registers (eg: x30). These samples also include which, on arm64, is not necessary and redefines previously defined macros (resulting in warnings) so these includes are guarded by !CONFIG_ARM64. Link: https://lkml.kernel.org/r/20230427140700.625241-3-revest@chromium.org Reviewed-by: Mark Rutland Tested-by: Mark Rutland Acked-by: Catalin Marinas Signed-off-by: Florent Revest Signed-off-by: Steven Rostedt (Google) --- arch/arm64/Kconfig | 2 ++ samples/ftrace/ftrace-direct-modify.c | 34 ++++++++++++++++++ samples/ftrace/ftrace-direct-multi-modify.c | 40 +++++++++++++++++++++ samples/ftrace/ftrace-direct-multi.c | 25 +++++++++++++ samples/ftrace/ftrace-direct-too.c | 26 ++++++++++++++ samples/ftrace/ftrace-direct.c | 24 +++++++++++++ 6 files changed, 151 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index f90b1780ea6c..d4421356bb3a 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -196,6 +196,8 @@ config ARM64 !CC_OPTIMIZE_FOR_SIZE) select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY \ if DYNAMIC_FTRACE_WITH_ARGS + select HAVE_SAMPLE_FTRACE_DIRECT + select HAVE_SAMPLE_FTRACE_DIRECT_MULTI select HAVE_EFFICIENT_UNALIGNED_ACCESS select HAVE_FAST_GUP select HAVE_FTRACE_MCOUNT_RECORD diff --git a/samples/ftrace/ftrace-direct-modify.c b/samples/ftrace/ftrace-direct-modify.c index 06d889149012..e5ed08098ff3 100644 --- a/samples/ftrace/ftrace-direct-modify.c +++ b/samples/ftrace/ftrace-direct-modify.c @@ -2,7 +2,9 @@ #include #include #include +#ifndef CONFIG_ARM64 #include +#endif extern void my_direct_func1(void); extern void my_direct_func2(void); @@ -96,6 +98,38 @@ asm ( #endif /* CONFIG_S390 */ +#ifdef CONFIG_ARM64 + +asm ( +" .pushsection .text, \"ax\", @progbits\n" +" .type my_tramp1, @function\n" +" .globl my_tramp1\n" +" my_tramp1:" +" bti c\n" +" sub sp, sp, #16\n" +" stp x9, x30, [sp]\n" +" bl my_direct_func1\n" +" ldp x30, x9, [sp]\n" +" add sp, sp, #16\n" +" ret x9\n" +" .size my_tramp1, .-my_tramp1\n" + +" .type my_tramp2, @function\n" +" .globl my_tramp2\n" +" my_tramp2:" +" bti c\n" +" sub sp, sp, #16\n" +" stp x9, x30, [sp]\n" +" bl my_direct_func2\n" +" ldp x30, x9, [sp]\n" +" add sp, sp, #16\n" +" ret x9\n" +" .size my_tramp2, .-my_tramp2\n" +" .popsection\n" +); + +#endif /* CONFIG_ARM64 */ + #ifdef CONFIG_LOONGARCH asm ( diff --git a/samples/ftrace/ftrace-direct-multi-modify.c b/samples/ftrace/ftrace-direct-multi-modify.c index 62f6b681999e..292cff2b3f5d 100644 --- a/samples/ftrace/ftrace-direct-multi-modify.c +++ b/samples/ftrace/ftrace-direct-multi-modify.c @@ -2,7 +2,9 @@ #include #include #include +#ifndef CONFIG_ARM64 #include +#endif extern void my_direct_func1(unsigned long ip); extern void my_direct_func2(unsigned long ip); @@ -103,6 +105,44 @@ asm ( #endif /* CONFIG_S390 */ +#ifdef CONFIG_ARM64 + +asm ( +" .pushsection .text, \"ax\", @progbits\n" +" .type my_tramp1, @function\n" +" .globl my_tramp1\n" +" my_tramp1:" +" bti c\n" +" sub sp, sp, #32\n" +" stp x9, x30, [sp]\n" +" str x0, [sp, #16]\n" +" mov x0, x30\n" +" bl my_direct_func1\n" +" ldp x30, x9, [sp]\n" +" ldr x0, [sp, #16]\n" +" add sp, sp, #32\n" +" ret x9\n" +" .size my_tramp1, .-my_tramp1\n" + +" .type my_tramp2, @function\n" +" .globl my_tramp2\n" +" my_tramp2:" +" bti c\n" +" sub sp, sp, #32\n" +" stp x9, x30, [sp]\n" +" str x0, [sp, #16]\n" +" mov x0, x30\n" +" bl my_direct_func2\n" +" ldp x30, x9, [sp]\n" +" ldr x0, [sp, #16]\n" +" add sp, sp, #32\n" +" ret x9\n" +" .size my_tramp2, .-my_tramp2\n" +" .popsection\n" +); + +#endif /* CONFIG_ARM64 */ + #ifdef CONFIG_LOONGARCH #include diff --git a/samples/ftrace/ftrace-direct-multi.c b/samples/ftrace/ftrace-direct-multi.c index 5482cf616b43..b4391e08c913 100644 --- a/samples/ftrace/ftrace-direct-multi.c +++ b/samples/ftrace/ftrace-direct-multi.c @@ -4,7 +4,9 @@ #include /* for handle_mm_fault() */ #include #include +#ifndef CONFIG_ARM64 #include +#endif extern void my_direct_func(unsigned long ip); @@ -66,6 +68,29 @@ asm ( #endif /* CONFIG_S390 */ +#ifdef CONFIG_ARM64 + +asm ( +" .pushsection .text, \"ax\", @progbits\n" +" .type my_tramp, @function\n" +" .globl my_tramp\n" +" my_tramp:" +" bti c\n" +" sub sp, sp, #32\n" +" stp x9, x30, [sp]\n" +" str x0, [sp, #16]\n" +" mov x0, x30\n" +" bl my_direct_func\n" +" ldp x30, x9, [sp]\n" +" ldr x0, [sp, #16]\n" +" add sp, sp, #32\n" +" ret x9\n" +" .size my_tramp, .-my_tramp\n" +" .popsection\n" +); + +#endif /* CONFIG_ARM64 */ + #ifdef CONFIG_LOONGARCH #include diff --git a/samples/ftrace/ftrace-direct-too.c b/samples/ftrace/ftrace-direct-too.c index 7986033887f6..e9804c5307c0 100644 --- a/samples/ftrace/ftrace-direct-too.c +++ b/samples/ftrace/ftrace-direct-too.c @@ -3,7 +3,9 @@ #include /* for handle_mm_fault() */ #include +#ifndef CONFIG_ARM64 #include +#endif extern void my_direct_func(struct vm_area_struct *vma, unsigned long address, unsigned int flags, struct pt_regs *regs); @@ -72,6 +74,30 @@ asm ( #endif /* CONFIG_S390 */ +#ifdef CONFIG_ARM64 + +asm ( +" .pushsection .text, \"ax\", @progbits\n" +" .type my_tramp, @function\n" +" .globl my_tramp\n" +" my_tramp:" +" bti c\n" +" sub sp, sp, #48\n" +" stp x9, x30, [sp]\n" +" stp x0, x1, [sp, #16]\n" +" stp x2, x3, [sp, #32]\n" +" bl my_direct_func\n" +" ldp x30, x9, [sp]\n" +" ldp x0, x1, [sp, #16]\n" +" ldp x2, x3, [sp, #32]\n" +" add sp, sp, #48\n" +" ret x9\n" +" .size my_tramp, .-my_tramp\n" +" .popsection\n" +); + +#endif /* CONFIG_ARM64 */ + #ifdef CONFIG_LOONGARCH asm ( diff --git a/samples/ftrace/ftrace-direct.c b/samples/ftrace/ftrace-direct.c index 06879bbd3399..20f4a7caa810 100644 --- a/samples/ftrace/ftrace-direct.c +++ b/samples/ftrace/ftrace-direct.c @@ -3,7 +3,9 @@ #include /* for wake_up_process() */ #include +#ifndef CONFIG_ARM64 #include +#endif extern void my_direct_func(struct task_struct *p); @@ -63,6 +65,28 @@ asm ( #endif /* CONFIG_S390 */ +#ifdef CONFIG_ARM64 + +asm ( +" .pushsection .text, \"ax\", @progbits\n" +" .type my_tramp, @function\n" +" .globl my_tramp\n" +" my_tramp:" +" bti c\n" +" sub sp, sp, #32\n" +" stp x9, x30, [sp]\n" +" str x0, [sp, #16]\n" +" bl my_direct_func\n" +" ldp x30, x9, [sp]\n" +" ldr x0, [sp, #16]\n" +" add sp, sp, #32\n" +" ret x9\n" +" .size my_tramp, .-my_tramp\n" +" .popsection\n" +); + +#endif /* CONFIG_ARM64 */ + #ifdef CONFIG_LOONGARCH asm ( From patchwork Tue Jul 11 14:06:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 118556 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp515550vqm; Tue, 11 Jul 2023 07:19:57 -0700 (PDT) X-Google-Smtp-Source: APBJJlFd+kyDulQVovMA7SZ2AKP2NLficwj+8zSr9vLOfHSpe8b3fAeR3Ms8OHqFCiD410oGRtGv X-Received: by 2002:a19:e059:0:b0:4f8:6d54:72f9 with SMTP id g25-20020a19e059000000b004f86d5472f9mr12182368lfj.61.1689085197278; Tue, 11 Jul 2023 07:19:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689085197; cv=none; d=google.com; s=arc-20160816; b=MQOQJRdvG850fuq2Of01s37Uhz6UyiSv5V9DwkOWUcr7yyng4ttDkm8WBvgL6mRcsb s7EPt511GwMC2K66ehkEM7YruClsW3lSTAYXV6juTP+X434Ub9EfNmNZcq3Y0cRPwWCv PYqu+enN5ih94BTnVe6tzU9e9Luaj5unAlvZkmc/uQ4yNeHG0gmG10s7L7nOC00YE0Q6 4XV1qWI+NxMiWcqFTvPPijAh8G5tV2+0F5rjRyuFjI29YBr4jAjAXiVEXuRQsRoaFPgu veFibiBw49aZe2d6MvaQ7hXL+FbogJ7xcl8U0TiseSGWaFaM20CheB7lvRhx5cjOJcvL JkYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=B/d+GLbjI6l+slWTAZWrnIWQs2HOHHZf+R2mdwT4sSw=; fh=VpmJArTmshAnnqqzymySDd3HZ2YyoViBSPgNJUah0AY=; b=i1nwwE/I9J0ZDtg1PtwE6U1N2eOpUKJiKOdJHyY+tDUTWPOj4Ec5wwuRMXp4k+M4Q5 4/5K03rfJFj/B5EFAf9TbEOPUXJ21cePhH10Ir4aQrVtgbGDk3r210bfWn0vxgan5Xl0 Umjp+0b6AD7yujMfKe0otDQeMB/zLyeJBMkGYw/qq1Y4vqtC/Xk0xazMMMBTPYutYodS H8H+D6lu/l728Y7EEo4iU7bmBF9EReZ7LH9YTqWjbTXmgOj8YrWApAfL32rjO5S293J0 hSJmyamooXYah6lzHh7wx0Ih4dZc7JDCpLI60OEGxy+QBazbr0R5wp5eHSmifrGxte8s awRQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bm24-20020a0564020b1800b0051e162ffa28si2048546edb.691.2023.07.11.07.19.33; Tue, 11 Jul 2023 07:19:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233326AbjGKOHY (ORCPT + 99 others); Tue, 11 Jul 2023 10:07:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233303AbjGKOHT (ORCPT ); Tue, 11 Jul 2023 10:07:19 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6FA76127 for ; Tue, 11 Jul 2023 07:07:18 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 03F0F6150F for ; Tue, 11 Jul 2023 14:07:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6C70FC433D9; Tue, 11 Jul 2023 14:07:17 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1qJE1M-0007mH-15; Tue, 11 Jul 2023 10:07:16 -0400 Message-ID: <20230711140716.152776356@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 11 Jul 2023 10:06:55 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , , , , , , , , YueHaibing Subject: [for-linus][PATCH 3/5] x86/ftrace: Remove unsued extern declaration ftrace_regs_caller_ret() References: <20230711140652.217008556@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771134199631929581 X-GMAIL-MSGID: 1771134199631929581 From: YueHaibing This is now unused, so can remove it. Link: https://lore.kernel.org/linux-trace-kernel/20230623091640.21952-1-yuehaibing@huawei.com Cc: Cc: Cc: Cc: Cc: Cc: Cc: Cc: Signed-off-by: YueHaibing Acked-by: Masami Hiramatsu (Google) Signed-off-by: Steven Rostedt (Google) --- arch/x86/kernel/ftrace.c | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 5e7ead52cfdb..c323a6b648ab 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -282,7 +282,6 @@ static inline void tramp_free(void *tramp) { } /* Defined as markers to the end of the ftrace default trampolines */ extern void ftrace_regs_caller_end(void); -extern void ftrace_regs_caller_ret(void); extern void ftrace_caller_end(void); extern void ftrace_caller_op_ptr(void); extern void ftrace_regs_caller_op_ptr(void); From patchwork Tue Jul 11 14:06:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 118561 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp516596vqm; Tue, 11 Jul 2023 07:21:28 -0700 (PDT) X-Google-Smtp-Source: APBJJlGooFna3+pIzQsUFdhdPlh4Uditdfn/bIzis5B4joP8OdzGRlD5aX5NwIUXua67w/hjkoAw X-Received: by 2002:a17:906:4ad2:b0:988:6526:beaa with SMTP id u18-20020a1709064ad200b009886526beaamr17033975ejt.40.1689085288598; Tue, 11 Jul 2023 07:21:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689085288; cv=none; d=google.com; s=arc-20160816; b=q4pROGh3xwywasE2VUZ1lRVK52OC32xReYWCVlIrO8S8lqzEcCTzukaor/fBLny0R7 LszP/4nCSMqtTForLbzPNOpy6Ss1D92Jq/eeoaaETZ1rNUOHX1I+tFIuaLkcSa5v/afK 9REV8BdD7nPFIiMYTE4VCaz/TOXW4ucmCCLIQDq6jq9cUybZwBdKabyXkqH59C6tazr6 fzzA8A2pc71x4ngsPQidpI6uhvr+2qyTMAlHrmzQyaEjGGdZOzSO+titgUgCEFf+rytI aOJ29XfbeXet2Ezn8dQiDrH2ZteTTCmOGInWuc+muQFziuOPWscG2elUEpOuuWQRv3yG WzKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=2LdeGOSeENN6+jLwrVCaTxf8yixiDohJLVHxS6oocwE=; fh=lvgq5Fl3JVDzu1iWd9yyZ4P40yKq6is8sbGAVRaLyEQ=; b=NhIuUusGOW4B0Vq3OeukTJpe/Aa7bNYpNpMt6LdWgWOR2Tdv96VP50WjIaVF8VoBJ3 blbrOJYGlRkh34gQuteu+l9KH1lUygLUKl3OCEJoM9DUeeI/A1GWkb+A7uv98PIsca19 tPcFXHV/cuiJ5kGD19LjL9RGZmH/jfgPHzKMAKGg0OtlUl4lMdEgFPbWEC9VXYpjfPjI NQW0GhcxIcA9Ke4mdZWqWpF81Tdhqekfdgpd9+vVGupclxh08wKkCEgVQa2a5J2pFag+ obuk3D0DPUO7j2HWClX7L7MvChXGAf6gVhxdJfh3aAQtj2rvgaUm51MCoKliAWauJN8Z mdZQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f12-20020a17090624cc00b00987606c11a2si2090698ejb.349.2023.07.11.07.21.04; Tue, 11 Jul 2023 07:21:28 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233361AbjGKOHa (ORCPT + 99 others); Tue, 11 Jul 2023 10:07:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45276 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233314AbjGKOHU (ORCPT ); Tue, 11 Jul 2023 10:07:20 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8A9E512A for ; Tue, 11 Jul 2023 07:07:18 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 0D61861516 for ; Tue, 11 Jul 2023 14:07:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 73BAFC43391; Tue, 11 Jul 2023 14:07:17 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1qJE1M-0007mp-1k; Tue, 11 Jul 2023 10:07:16 -0400 Message-ID: <20230711140716.357016966@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 11 Jul 2023 10:06:56 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Will Deacon , Kees Cook , Florent Revest , Arnd Bergmann , Catalin Marinas Subject: [for-linus][PATCH 4/5] tracing: arm64: Avoid missing-prototype warnings References: <20230711140652.217008556@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771134295762573170 X-GMAIL-MSGID: 1771134295762573170 From: Arnd Bergmann These are all tracing W=1 warnings in arm64 allmodconfig about missing prototypes: kernel/trace/trace_kprobe_selftest.c:7:5: error: no previous prototype for 'kprobe_trace_selftest_target' [-Werror=missing-pro totypes] kernel/trace/ftrace.c:329:5: error: no previous prototype for '__register_ftrace_function' [-Werror=missing-prototypes] kernel/trace/ftrace.c:372:5: error: no previous prototype for '__unregister_ftrace_function' [-Werror=missing-prototypes] kernel/trace/ftrace.c:4130:15: error: no previous prototype for 'arch_ftrace_match_adjust' [-Werror=missing-prototypes] kernel/trace/fgraph.c:243:15: error: no previous prototype for 'ftrace_return_to_handler' [-Werror=missing-prototypes] kernel/trace/fgraph.c:358:6: error: no previous prototype for 'ftrace_graph_sleep_time_control' [-Werror=missing-prototypes] arch/arm64/kernel/ftrace.c:460:6: error: no previous prototype for 'prepare_ftrace_return' [-Werror=missing-prototypes] arch/arm64/kernel/ptrace.c:2172:5: error: no previous prototype for 'syscall_trace_enter' [-Werror=missing-prototypes] arch/arm64/kernel/ptrace.c:2195:6: error: no previous prototype for 'syscall_trace_exit' [-Werror=missing-prototypes] Move the declarations to an appropriate header where they can be seen by the caller and callee, and make sure the headers are included where needed. Link: https://lore.kernel.org/linux-trace-kernel/20230517125215.930689-1-arnd@kernel.org Cc: Masami Hiramatsu Cc: Mark Rutland Cc: Will Deacon Cc: Kees Cook Cc: Florent Revest Signed-off-by: Arnd Bergmann Acked-by: Catalin Marinas [ Fixed ftrace_return_to_handler() to handle CONFIG_HAVE_FUNCTION_GRAPH_RETVAL case ] Signed-off-by: Steven Rostedt (Google) --- arch/arm64/include/asm/ftrace.h | 4 ++++ arch/arm64/include/asm/syscall.h | 3 +++ arch/arm64/kernel/syscall.c | 3 --- include/linux/ftrace.h | 8 ++++++++ kernel/trace/fgraph.c | 1 + kernel/trace/ftrace_internal.h | 5 +++-- kernel/trace/trace_kprobe_selftest.c | 3 +++ 7 files changed, 22 insertions(+), 5 deletions(-) diff --git a/arch/arm64/include/asm/ftrace.h b/arch/arm64/include/asm/ftrace.h index 21ac1c5c71d3..ab158196480c 100644 --- a/arch/arm64/include/asm/ftrace.h +++ b/arch/arm64/include/asm/ftrace.h @@ -211,6 +211,10 @@ static inline unsigned long fgraph_ret_regs_frame_pointer(struct fgraph_ret_regs { return ret_regs->fp; } + +void prepare_ftrace_return(unsigned long self_addr, unsigned long *parent, + unsigned long frame_pointer); + #endif /* ifdef CONFIG_FUNCTION_GRAPH_TRACER */ #endif diff --git a/arch/arm64/include/asm/syscall.h b/arch/arm64/include/asm/syscall.h index 4cfe9b49709b..ab8e14b96f68 100644 --- a/arch/arm64/include/asm/syscall.h +++ b/arch/arm64/include/asm/syscall.h @@ -85,4 +85,7 @@ static inline int syscall_get_arch(struct task_struct *task) return AUDIT_ARCH_AARCH64; } +int syscall_trace_enter(struct pt_regs *regs); +void syscall_trace_exit(struct pt_regs *regs); + #endif /* __ASM_SYSCALL_H */ diff --git a/arch/arm64/kernel/syscall.c b/arch/arm64/kernel/syscall.c index da84cf855c44..32f49f8f1b91 100644 --- a/arch/arm64/kernel/syscall.c +++ b/arch/arm64/kernel/syscall.c @@ -75,9 +75,6 @@ static inline bool has_syscall_work(unsigned long flags) return unlikely(flags & _TIF_SYSCALL_WORK); } -int syscall_trace_enter(struct pt_regs *regs); -void syscall_trace_exit(struct pt_regs *regs); - static void el0_svc_common(struct pt_regs *regs, int scno, int sc_nr, const syscall_fn_t syscall_table[]) { diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index 8e59bd954153..2abd20d9211d 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h @@ -41,6 +41,14 @@ struct ftrace_ops; struct ftrace_regs; struct dyn_ftrace; +char *arch_ftrace_match_adjust(char *str, const char *search); + +#ifdef CONFIG_HAVE_FUNCTION_GRAPH_RETVAL +unsigned long ftrace_return_to_handler(struct fgraph_ret_regs *ret_regs); +#else +unsigned long ftrace_return_to_handler(unsigned long frame_pointer); +#endif + #ifdef CONFIG_FUNCTION_TRACER /* * If the arch's mcount caller does not support all of ftrace's diff --git a/kernel/trace/fgraph.c b/kernel/trace/fgraph.c index cd2c35b1dd8f..c83c005e654e 100644 --- a/kernel/trace/fgraph.c +++ b/kernel/trace/fgraph.c @@ -15,6 +15,7 @@ #include #include "ftrace_internal.h" +#include "trace.h" #ifdef CONFIG_DYNAMIC_FTRACE #define ASSIGN_OPS_HASH(opsname, val) \ diff --git a/kernel/trace/ftrace_internal.h b/kernel/trace/ftrace_internal.h index 382775edf690..5012c04f92c0 100644 --- a/kernel/trace/ftrace_internal.h +++ b/kernel/trace/ftrace_internal.h @@ -2,6 +2,9 @@ #ifndef _LINUX_KERNEL_FTRACE_INTERNAL_H #define _LINUX_KERNEL_FTRACE_INTERNAL_H +int __register_ftrace_function(struct ftrace_ops *ops); +int __unregister_ftrace_function(struct ftrace_ops *ops); + #ifdef CONFIG_FUNCTION_TRACER extern struct mutex ftrace_lock; @@ -15,8 +18,6 @@ int ftrace_ops_test(struct ftrace_ops *ops, unsigned long ip, void *regs); #else /* !CONFIG_DYNAMIC_FTRACE */ -int __register_ftrace_function(struct ftrace_ops *ops); -int __unregister_ftrace_function(struct ftrace_ops *ops); /* Keep as macros so we do not need to define the commands */ # define ftrace_startup(ops, command) \ ({ \ diff --git a/kernel/trace/trace_kprobe_selftest.c b/kernel/trace/trace_kprobe_selftest.c index 16548ee4c8c6..3851cd1e6a62 100644 --- a/kernel/trace/trace_kprobe_selftest.c +++ b/kernel/trace/trace_kprobe_selftest.c @@ -1,4 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 + +#include "trace_kprobe_selftest.h" + /* * Function used during the kprobe self test. This function is in a separate * compile unit so it can be compile with CC_FLAGS_FTRACE to ensure that it From patchwork Tue Jul 11 14:06:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 118553 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp514607vqm; Tue, 11 Jul 2023 07:18:35 -0700 (PDT) X-Google-Smtp-Source: APBJJlElwkq3++QF75NwWLVFvCfYzTV/VXHX/VVoEJelMsG2clnnvJ78Vw7iDZZX5u8gpNcgPqY+ X-Received: by 2002:a17:907:cc9a:b0:992:b3a3:81f4 with SMTP id up26-20020a170907cc9a00b00992b3a381f4mr16972497ejc.50.1689085115782; Tue, 11 Jul 2023 07:18:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689085115; cv=none; d=google.com; s=arc-20160816; b=ojwJ/mh1N9Rejmzz03oa7BHmRM3ReEedjt+rUOv15QzjJmahIitQICH49Rdah8gKKP sVAhO3Ec01IFDVpgJIx1p3kwtN694zWvLJDsycokTMWoWgZv+lT1AWStfQOD+gHm/AxL XRs8TYvtet0isdwsulS0SkPcN2sUBDF0RPiy7Gds2vAYXZcvOYkH/6lZBWRjwF4sYAji kIBW2olKVUser30bA6V429XxkaXVFbw1FAyFHzaoAnTLr3AsqhUKExD2esW/EKkO0Jhy KFonLXioOvYTDI9LzNWmHRe+MCgqDwpl8YaVsQb0klVs801QzuYyUyReCT9PSyoizeLF Y+IA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=RsXEfdadTjrTJTAH6+qe15wBEGGF9CsgPrVdqrTRn4M=; fh=TaaQLnbGWiKu3/HwIKiA70emPjplBVeR5ymaX4dVUCg=; b=bDTZr/QJbI2CuCrna3pQ2o730MUaopgb0bujxrIqBpI+GoOhawrRZvBhDzDfHzUAWz JCyc//CH6mfEbtMS6SP+R2Npko353s8f78CJxIeJm0HKmnX5i/oC3+s2o1gtbHtZn9DP dX1+P3T0iG2zd9DTFiSX5iJLz9IkP8TwkI5IfopNuIrlJo/KwSO5YRgHtfztCGVOVsUH XPdlky9WYKuSRfDofxv3JLJhnqSdXggFYI4R/Ctg/SDKRBh9mDLE/RPjxUaPHYMMfCgO PNtB7RmXmEPpTKpmgYuVFFuHHbS5dfUCwspFYYXTzvdIw1VekUe3mWx2RXplHSO4hBsc EUUg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id xa17-20020a170907b9d100b0099351214a94si2286025ejc.648.2023.07.11.07.18.11; Tue, 11 Jul 2023 07:18:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233303AbjGKOH2 (ORCPT + 99 others); Tue, 11 Jul 2023 10:07:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45274 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233313AbjGKOHT (ORCPT ); Tue, 11 Jul 2023 10:07:19 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 081B8BC; Tue, 11 Jul 2023 07:07:19 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 4ABC861519; Tue, 11 Jul 2023 14:07:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5057C433C7; Tue, 11 Jul 2023 14:07:17 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1qJE1M-0007nN-2Q; Tue, 11 Jul 2023 10:07:16 -0400 Message-ID: <20230711140716.561714719@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 11 Jul 2023 10:06:57 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , stable@vger.kernel.org, Beau Belgrave Subject: [for-linus][PATCH 5/5] tracing/user_events: Fix struct arg size match check References: <20230711140652.217008556@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771134114482096601 X-GMAIL-MSGID: 1771134114482096601 From: Beau Belgrave When users register an event the name of the event and it's argument are checked to ensure they match if the event already exists. Normally all arguments are in the form of "type name", except for when the type starts with "struct ". In those cases, the size of the struct is passed in addition to the name, IE: "struct my_struct a 20" for an argument that is of type "struct my_struct" with a field name of "a" and has the size of 20 bytes. The current code does not honor the above case properly when comparing a match. This causes the event register to fail even when the same string was used for events that contain a struct argument within them. The example above "struct my_struct a 20" generates a match string of "struct my_struct a" omitting the size field. Add the struct size of the existing field when generating a comparison string for a struct field to ensure proper match checking. Link: https://lkml.kernel.org/r/20230629235049.581-2-beaub@linux.microsoft.com Cc: stable@vger.kernel.org Fixes: e6f89a149872 ("tracing/user_events: Ensure user provided strings are safely formatted") Signed-off-by: Beau Belgrave Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace_events_user.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c index dbb14705d0d3..83c0536ff41c 100644 --- a/kernel/trace/trace_events_user.c +++ b/kernel/trace/trace_events_user.c @@ -1223,6 +1223,9 @@ static int user_field_set_string(struct ftrace_event_field *field, pos += snprintf(buf + pos, LEN_OR_ZERO, " "); pos += snprintf(buf + pos, LEN_OR_ZERO, "%s", field->name); + if (str_has_prefix(field->type, "struct ")) + pos += snprintf(buf + pos, LEN_OR_ZERO, " %d", field->size); + if (colon) pos += snprintf(buf + pos, LEN_OR_ZERO, ";");