arm64/signal: Avoid rereading context frame sizes
authorMark Brown <broonie@kernel.org>
Tue, 31 Jan 2023 22:20:42 +0000 (22:20 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 1 Feb 2023 17:56:47 +0000 (17:56 +0000)
commitb57682b315588aab496439e317c0f433f28600ae
treecb619beb06ee29138a6430c22a398bf9f4e2075c
parent4e4e93045fe1ad83dce7448690458b7f73669044
arm64/signal: Avoid rereading context frame sizes

We need to read the sizes of the signal context frames as part of parsing
the overall signal context in parse_user_sigframe(). In the cases where we
defer frame specific parsing to other functions those functions (other
than the recently added TPIDR2 parser) reread the size and validate the
version they read, opening the possibility that the value may change.
Avoid this possibility by passing the size read in parse_user_sigframe()
through user_ctxs and referring to that.

For consistency we move the size check for the TPIDR2 context into the
TPIDR2 parsing function.

Note that for SVE, ZA and ZT contexts we still read the size again but
after this change we no longer use the value, further changes will avoid
the read.

Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20221212-arm64-signal-cleanup-v3-4-4545c94b20ff@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kernel/signal.c