# \[PATCH 0/6\] Final si\_trapno bits

- List: linux-api
- 2 messages, 2 authors
- Page: https://ratatoskr.run/linux-api/2021/07/1445949/t

## \[PATCH 0/6\] Final si\_trapno bits

- From: Eric W. Biederman \<hidden\>
- Date: 2021-07-15 18:10:36 
- Message: https://ratatoskr.run/linux-api/2021/07/1445949.md

```text

As a part of a fix for the ABI of the newly added SIGTRAP TRAP_PERF a
si_trapno was reduced to an ordinary extention of the _sigfault case
of struct siginfo.

When Linus saw the complete set of changes come in as a fix he requested
that the set of changes be trimmed down to just what was necessary to
fix the SIGTRAP TRAP_PERF ABI.

I had intended to get the rest of the changes into the merge window for
v5.14 but I dropped the ball.

I have made the changes to stop using __ARCH_SI_TRAPNO be per
architecture so they are easier to review.  In doing so I found one
place on alpha where I used send_sig_fault instead of
send_sig_fault_trapno(... si_trapno = 0).  That would not have changed
the userspace behavior but it did make the kernel code less clear.

My rule in these patches is everywhere that siginfo layout calls
for SIL_FAULT_TRAPNO the code uses either force_sig_fault_trapno
or send_sig_fault_trapno.

And of course I have rebased and compile tested Marco's compile time
assert patches.

Eric


Eric W. Biederman (3):
      signal/sparc: si_trapno is only used with SIGILL ILL_ILLTRP
      signal/alpha: si_trapno is only used with SIGFPE and SIGTRAP TRAP_UNK
      signal: Remove the generic __ARCH_SI_TRAPNO support

Marco Elver (3):
      sparc64: Add compile-time asserts for siginfo_t offsets
      arm: Add compile-time asserts for siginfo_t offsets
      arm64: Add compile-time asserts for siginfo_t offsets

 arch/alpha/include/uapi/asm/siginfo.h |  2 --
 arch/alpha/kernel/osf_sys.c           |  2 +-
 arch/alpha/kernel/signal.c            |  4 +--
 arch/alpha/kernel/traps.c             | 26 +++++++++---------
 arch/alpha/mm/fault.c                 |  4 +--
 arch/arm/kernel/signal.c              | 37 +++++++++++++++++++++++++
 arch/arm64/kernel/signal.c            | 37 +++++++++++++++++++++++++
 arch/arm64/kernel/signal32.c          | 37 +++++++++++++++++++++++++
 arch/mips/include/uapi/asm/siginfo.h  |  2 --
 arch/sparc/include/uapi/asm/siginfo.h |  3 --
 arch/sparc/kernel/process_64.c        |  2 +-
 arch/sparc/kernel/signal32.c          | 35 +++++++++++++++++++++++
 arch/sparc/kernel/signal_64.c         | 34 +++++++++++++++++++++++
 arch/sparc/kernel/sys_sparc_32.c      |  2 +-
 arch/sparc/kernel/sys_sparc_64.c      |  2 +-
 arch/sparc/kernel/traps_32.c          | 22 +++++++--------
 arch/sparc/kernel/traps_64.c          | 44 +++++++++++++----------------
 arch/sparc/kernel/unaligned_32.c      |  2 +-
 arch/sparc/mm/fault_32.c              |  2 +-
 arch/sparc/mm/fault_64.c              |  2 +-
 include/linux/sched/signal.h          | 11 ++------
 kernel/signal.c                       | 52 ++++++++++++++++++++++++++---------
 22 files changed, 276 insertions(+), 88 deletions(-)

```

## Re: \[PATCH 0/6\] Final si\_trapno bits

- From: Marco Elver \<elver@google.com\>
- Date: 2021-07-16 11:50:19 
- Message: https://ratatoskr.run/linux-api/2021/07/1447503.md

```text
On Thu, Jul 15, 2021 at 01:09PM -0500, Eric W. Biederman wrote:
> As a part of a fix for the ABI of the newly added SIGTRAP TRAP_PERF a
> si_trapno was reduced to an ordinary extention of the _sigfault case
> of struct siginfo.
> 
> When Linus saw the complete set of changes come in as a fix he requested
> that the set of changes be trimmed down to just what was necessary to
> fix the SIGTRAP TRAP_PERF ABI.
> 
> I had intended to get the rest of the changes into the merge window for
> v5.14 but I dropped the ball.
> 
> I have made the changes to stop using __ARCH_SI_TRAPNO be per
> architecture so they are easier to review.  In doing so I found one
> place on alpha where I used send_sig_fault instead of
> send_sig_fault_trapno(... si_trapno = 0).  That would not have changed
> the userspace behavior but it did make the kernel code less clear.
> 
> My rule in these patches is everywhere that siginfo layout calls
> for SIL_FAULT_TRAPNO the code uses either force_sig_fault_trapno
> or send_sig_fault_trapno.
> 
> And of course I have rebased and compile tested Marco's compile time
> assert patches.
> 
> Eric
> 
> 
> Eric W. Biederman (3):
>       signal/sparc: si_trapno is only used with SIGILL ILL_ILLTRP
>       signal/alpha: si_trapno is only used with SIGFPE and SIGTRAP TRAP_UNK
>       signal: Remove the generic __ARCH_SI_TRAPNO support
> 
> Marco Elver (3):
>       sparc64: Add compile-time asserts for siginfo_t offsets
>       arm: Add compile-time asserts for siginfo_t offsets
>       arm64: Add compile-time asserts for siginfo_t offsets

Nice, thanks for the respin. If I diffed it right, I see this is almost
(modulo what you mentioned above) equivalent to:
  https://lore.kernel.org/linux-api/m1tuni8ano.fsf_-_@fess.ebiederm.org/
+ what's already in mainline. It's only missing:

	signal: Verify the alignment and size of siginfo_t
	signal: Rename SIL_PERF_EVENT SIL_FAULT_PERF_EVENT for consistency

Would this be appropriate for this series, or rather separately, or
dropped completely?

Thanks,
-- Marco
```
