1. 02 Oct, 2023 11 commits
  2. 29 Sep, 2023 14 commits
  3. 28 Sep, 2023 5 commits
    • Kees Cook's avatar
      MAINTAINERS: hardening: Add Gustavo as Reviewer · 4ae7f632
      Kees Cook authored
      It's an oversight to not have already listed Gustavo here. Add him as a
      Reviewer.
      
      Cc: Gustavo A. R. Silva <gustavoars@kernel.org>
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      4ae7f632
    • Kees Cook's avatar
      accel/ivpu: Annotate struct ivpu_job with __counted_by · 5e6a1c80
      Kees Cook authored
      Prepare for the coming implementation by GCC and Clang of the __counted_by
      attribute. Flexible array members annotated with __counted_by can have
      their accesses bounds-checked at run-time checking via CONFIG_UBSAN_BOUNDS
      (for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family
      functions).
      
      As found with Coccinelle[1], add __counted_by for struct ivpu_job.
      
      [1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci
      
      Cc: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
      Cc: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
      Cc: Oded Gabbay <ogabbay@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Tom Rix <trix@redhat.com>
      Cc: dri-devel@lists.freedesktop.org
      Cc: llvm@lists.linux.dev
      Reviewed-by: default avatarStanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
      Link: https://lore.kernel.org/r/20230922175416.work.272-kees@kernel.orgSigned-off-by: default avatarKees Cook <keescook@chromium.org>
      5e6a1c80
    • Kees Cook's avatar
      MAINTAINERS: hardening: Add __counted_by regex · 921f15fe
      Kees Cook authored
      Since __counted_by annotations may also require that code be changed to
      get initialization ordering correct, let's get an extra group of eyes on
      code that is working on these annotations.
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      921f15fe
    • Ricardo Cañuelo's avatar
      selftests/lkdtm: Disable CONFIG_UBSAN_TRAP in test config · cf77bf69
      Ricardo Cañuelo authored
      The lkdtm selftest config fragment enables CONFIG_UBSAN_TRAP to make the
      ARRAY_BOUNDS test kill the calling process when an out-of-bound access
      is detected by UBSAN. However, after this [1] commit, UBSAN is triggered
      under many new scenarios that weren't detected before, such as in struct
      definitions with fixed-size trailing arrays used as flexible arrays. As
      a result, CONFIG_UBSAN_TRAP=y has become a very aggressive option to
      enable except for specific situations.
      
      `make kselftest-merge` applies CONFIG_UBSAN_TRAP=y to the kernel config
      for all selftests, which makes many of them fail because of system hangs
      during boot.
      
      This change removes the config option from the lkdtm kselftest and
      configures the ARRAY_BOUNDS test to look for UBSAN reports rather than
      relying on the calling process being killed.
      
      [1] commit 2d47c695 ("ubsan: Tighten UBSAN_BOUNDS on GCC")'
      Signed-off-by: default avatarRicardo Cañuelo <ricardo.canuelo@collabora.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Link: https://lore.kernel.org/r/20230802063252.1917997-1-ricardo.canuelo@collabora.comSigned-off-by: default avatarKees Cook <keescook@chromium.org>
      cf77bf69
    • Mark Rutland's avatar
      lkdtm/bugs: add test for panic() with stuck secondary CPUs · eac80dd4
      Mark Rutland authored
      Upon a panic() the kernel will use either smp_send_stop() or
      crash_smp_send_stop() to attempt to stop secondary CPUs via an IPI,
      which may or may not be an NMI. Generally it's preferable that this is an
      NMI so that CPUs can be stopped in as many situations as possible, but
      it's not always possible to provide an NMI, and there are cases where
      CPUs may be unable to handle the NMI regardless.
      
      This patch adds a test for panic() where all other CPUs are stuck with
      interrupts disabled, which can be used to check whether the kernel
      gracefully handles CPUs failing to respond to a stop, and whether NMIs
      actually work to stop CPUs.
      
      For example, on arm64 *without* an NMI, this results in:
      
      | # echo PANIC_STOP_IRQOFF > /sys/kernel/debug/provoke-crash/DIRECT
      | lkdtm: Performing direct entry PANIC_STOP_IRQOFF
      | Kernel panic - not syncing: panic stop irqoff test
      | CPU: 2 PID: 24 Comm: migration/2 Not tainted 6.5.0-rc3-00077-ge6c782389895-dirty #4
      | Hardware name: QEMU QEMU Virtual Machine, BIOS 0.0.0 02/06/2015
      | Stopper: multi_cpu_stop+0x0/0x1a0 <- stop_machine_cpuslocked+0x158/0x1a4
      | Call trace:
      |  dump_backtrace+0x94/0xec
      |  show_stack+0x18/0x24
      |  dump_stack_lvl+0x74/0xc0
      |  dump_stack+0x18/0x24
      |  panic+0x358/0x3e8
      |  lkdtm_PANIC+0x0/0x18
      |  multi_cpu_stop+0x9c/0x1a0
      |  cpu_stopper_thread+0x84/0x118
      |  smpboot_thread_fn+0x224/0x248
      |  kthread+0x114/0x118
      |  ret_from_fork+0x10/0x20
      | SMP: stopping secondary CPUs
      | SMP: failed to stop secondary CPUs 0-3
      | Kernel Offset: 0x401cf3490000 from 0xffff80008000000c0
      | PHYS_OFFSET: 0x40000000
      | CPU features: 0x00000000,68c167a1,cce6773f
      | Memory Limit: none
      | ---[ end Kernel panic - not syncing: panic stop irqoff test ]---
      
      Note the "failed to stop secondary CPUs 0-3" message.
      
      On arm64 *with* an NMI, this results in:
      
      | # echo PANIC_STOP_IRQOFF > /sys/kernel/debug/provoke-crash/DIRECT
      | lkdtm: Performing direct entry PANIC_STOP_IRQOFF
      | Kernel panic - not syncing: panic stop irqoff test
      | CPU: 1 PID: 19 Comm: migration/1 Not tainted 6.5.0-rc3-00077-ge6c782389895-dirty #4
      | Hardware name: QEMU QEMU Virtual Machine, BIOS 0.0.0 02/06/2015
      | Stopper: multi_cpu_stop+0x0/0x1a0 <- stop_machine_cpuslocked+0x158/0x1a4
      | Call trace:
      |  dump_backtrace+0x94/0xec
      |  show_stack+0x18/0x24
      |  dump_stack_lvl+0x74/0xc0
      |  dump_stack+0x18/0x24
      |  panic+0x358/0x3e8
      |  lkdtm_PANIC+0x0/0x18
      |  multi_cpu_stop+0x9c/0x1a0
      |  cpu_stopper_thread+0x84/0x118
      |  smpboot_thread_fn+0x224/0x248
      |  kthread+0x114/0x118
      |  ret_from_fork+0x10/0x20
      | SMP: stopping secondary CPUs
      | Kernel Offset: 0x55a9c0bc0000 from 0xffff800080000000
      | PHYS_OFFSET: 0x40000000
      | CPU features: 0x00000000,68c167a1,fce6773f
      | Memory Limit: none
      | ---[ end Kernel panic - not syncing: panic stop irqoff test ]---
      
      Note the absence of a "failed to stop secondary CPUs" message, since we
      don't log anything when secondary CPUs are successfully stopped.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Cc: Douglas Anderson <dianders@chromium.org>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Stephen Boyd <swboyd@chromium.org>
      Cc: Sumit Garg <sumit.garg@linaro.org>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
      Reviewed-by: default avatarStephen Boyd <swboyd@chromium.org>
      Link: https://lore.kernel.org/r/20230921161634.4063233-1-mark.rutland@arm.comSigned-off-by: default avatarKees Cook <keescook@chromium.org>
      eac80dd4
  4. 22 Sep, 2023 3 commits
  5. 17 Sep, 2023 7 commits