Link [ NetBSD | NetBSD OpenGrok source search | PR fulltext-search | Summary of daily snapshot builds | history of daily build result | pkgsrc commit viewer ]


   
        usage: [branch:branch] [user:user] [path@revision] keyword [... [-excludekeyword [...]]] (e.g. branch:MAIN sys/arch/arm, if_wm.c@1.234 )




switch to index mode

recent branches: MAIN (4h)  netbsd-8 (5d)  netbsd-10 (5d)  netbsd-9 (11d)  thorpej-ifq (175d)  thorpej-altq-separation (178d) 

2024-05-10 07:35:58 UTC Now

2024-04-14 12:51:17 UTC MAIN commitmail json YAML

kern/58149: aarch64: Cannot return from a signal handler if SP was misaligned when the signal arrived

Apply the kernel diff from the PR

1. sendsig_siginfo() previously assumed that user SP was always aligned to
  16 bytes and could call signal handlers with SP misaligned. This is a
  wrong assumption because aarch64 demands that SP is aligned *only while*
  it's being used to access memory. Now it properly aligns it before
  pusing anything on the stack.

2. cpu_mcontext_validate() used to check if _REG_SP was aligned and
  considered the ucontext invalid otherwise. This meant if a signal was
  sent to a process whose SP was misaligned, the signal handler would fail
  to return because the ucontext passed from the kernel was an invalid
  one. Now setcontext(2) doesn't complain about misaligned SP.

(skrll)