1. 10 Mar, 2023 3 commits
    • Chen Zhongjin's avatar
      ftrace: Fix invalid address access in lookup_rec() when index is 0 · ee92fa44
      Chen Zhongjin authored
      KASAN reported follow problem:
      
       BUG: KASAN: use-after-free in lookup_rec
       Read of size 8 at addr ffff000199270ff0 by task modprobe
       CPU: 2 Comm: modprobe
       Call trace:
        kasan_report
        __asan_load8
        lookup_rec
        ftrace_location
        arch_check_ftrace_location
        check_kprobe_address_safe
        register_kprobe
      
      When checking pg->records[pg->index - 1].ip in lookup_rec(), it can get a
      pg which is newly added to ftrace_pages_start in ftrace_process_locs().
      Before the first pg->index++, index is 0 and accessing pg->records[-1].ip
      will cause this problem.
      
      Don't check the ip when pg->index is 0.
      
      Link: https://lore.kernel.org/linux-trace-kernel/20230309080230.36064-1-chenzhongjin@huawei.com
      
      Cc: stable@vger.kernel.org
      Fixes: 9644302e ("ftrace: Speed up search by skipping pages by address")
      Suggested-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      Signed-off-by: default avatarChen Zhongjin <chenzhongjin@huawei.com>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      ee92fa44
    • Steven Rostedt (Google)'s avatar
      tracing: Check field value in hist_field_name() · 9f116f76
      Steven Rostedt (Google) authored
      The function hist_field_name() cannot handle being passed a NULL field
      parameter. It should never be NULL, but due to a previous bug, NULL was
      passed to the function and the kernel crashed due to a NULL dereference.
      Mark Rutland reported this to me on IRC.
      
      The bug was fixed, but to prevent future bugs from crashing the kernel,
      check the field and add a WARN_ON() if it is NULL.
      
      Link: https://lkml.kernel.org/r/20230302020810.762384440@goodmis.org
      
      Cc: stable@vger.kernel.org
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Reported-by: default avatarMark Rutland <mark.rutland@arm.com>
      Fixes: c6afad49 ("tracing: Add hist trigger 'sym' and 'sym-offset' modifiers")
      Tested-by: default avatarMark Rutland <mark.rutland@arm.com>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      9f116f76
    • Steven Rostedt (Google)'s avatar
      tracing: Do not let histogram values have some modifiers · e0213434
      Steven Rostedt (Google) authored
      Histogram values can not be strings, stacktraces, graphs, symbols,
      syscalls, or grouped in buckets or log. Give an error if a value is set to
      do so.
      
      Note, the histogram code was not prepared to handle these modifiers for
      histograms and caused a bug.
      
      Mark Rutland reported:
      
       # echo 'p:copy_to_user __arch_copy_to_user n=$arg2' >> /sys/kernel/tracing/kprobe_events
       # echo 'hist:keys=n:vals=hitcount.buckets=8:sort=hitcount' > /sys/kernel/tracing/events/kprobes/copy_to_user/trigger
       # cat /sys/kernel/tracing/events/kprobes/copy_to_user/hist
      [  143.694628] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
      [  143.695190] Mem abort info:
      [  143.695362]   ESR = 0x0000000096000004
      [  143.695604]   EC = 0x25: DABT (current EL), IL = 32 bits
      [  143.695889]   SET = 0, FnV = 0
      [  143.696077]   EA = 0, S1PTW = 0
      [  143.696302]   FSC = 0x04: level 0 translation fault
      [  143.702381] Data abort info:
      [  143.702614]   ISV = 0, ISS = 0x00000004
      [  143.702832]   CM = 0, WnR = 0
      [  143.703087] user pgtable: 4k pages, 48-bit VAs, pgdp=00000000448f9000
      [  143.703407] [0000000000000000] pgd=0000000000000000, p4d=0000000000000000
      [  143.704137] Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP
      [  143.704714] Modules linked in:
      [  143.705273] CPU: 0 PID: 133 Comm: cat Not tainted 6.2.0-00003-g6fc512c10a7c #3
      [  143.706138] Hardware name: linux,dummy-virt (DT)
      [  143.706723] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      [  143.707120] pc : hist_field_name.part.0+0x14/0x140
      [  143.707504] lr : hist_field_name.part.0+0x104/0x140
      [  143.707774] sp : ffff800008333a30
      [  143.707952] x29: ffff800008333a30 x28: 0000000000000001 x27: 0000000000400cc0
      [  143.708429] x26: ffffd7a653b20260 x25: 0000000000000000 x24: ffff10d303ee5800
      [  143.708776] x23: ffffd7a6539b27b0 x22: ffff10d303fb8c00 x21: 0000000000000001
      [  143.709127] x20: ffff10d303ec2000 x19: 0000000000000000 x18: 0000000000000000
      [  143.709478] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
      [  143.709824] x14: 0000000000000000 x13: 203a6f666e692072 x12: 6567676972742023
      [  143.710179] x11: 0a230a6d6172676f x10: 000000000000002c x9 : ffffd7a6521e018c
      [  143.710584] x8 : 000000000000002c x7 : 7f7f7f7f7f7f7f7f x6 : 000000000000002c
      [  143.710915] x5 : ffff10d303b0103e x4 : ffffd7a653b20261 x3 : 000000000000003d
      [  143.711239] x2 : 0000000000020001 x1 : 0000000000000001 x0 : 0000000000000000
      [  143.711746] Call trace:
      [  143.712115]  hist_field_name.part.0+0x14/0x140
      [  143.712642]  hist_field_name.part.0+0x104/0x140
      [  143.712925]  hist_field_print+0x28/0x140
      [  143.713125]  event_hist_trigger_print+0x174/0x4d0
      [  143.713348]  hist_show+0xf8/0x980
      [  143.713521]  seq_read_iter+0x1bc/0x4b0
      [  143.713711]  seq_read+0x8c/0xc4
      [  143.713876]  vfs_read+0xc8/0x2a4
      [  143.714043]  ksys_read+0x70/0xfc
      [  143.714218]  __arm64_sys_read+0x24/0x30
      [  143.714400]  invoke_syscall+0x50/0x120
      [  143.714587]  el0_svc_common.constprop.0+0x4c/0x100
      [  143.714807]  do_el0_svc+0x44/0xd0
      [  143.714970]  el0_svc+0x2c/0x84
      [  143.715134]  el0t_64_sync_handler+0xbc/0x140
      [  143.715334]  el0t_64_sync+0x190/0x194
      [  143.715742] Code: a9bd7bfd 910003fd a90153f3 aa0003f3 (f9400000)
      [  143.716510] ---[ end trace 0000000000000000 ]---
      Segmentation fault
      
      Link: https://lkml.kernel.org/r/20230302020810.559462599@goodmis.org
      
      Cc: stable@vger.kernel.org
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Fixes: c6afad49 ("tracing: Add hist trigger 'sym' and 'sym-offset' modifiers")
      Reported-by: default avatarMark Rutland <mark.rutland@arm.com>
      Tested-by: default avatarMark Rutland <mark.rutland@arm.com>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      e0213434
  2. 18 Feb, 2023 3 commits
  3. 16 Feb, 2023 5 commits
  4. 07 Feb, 2023 11 commits
  5. 25 Jan, 2023 16 commits
  6. 24 Jan, 2023 2 commits