kselftest/arm64: mte: user_mem: introduce tag_offset and tag_len
authorJoey Gouly <joey.gouly@arm.com>
Wed, 9 Feb 2022 15:22:35 +0000 (15:22 +0000)
committerWill Deacon <will@kernel.org>
Tue, 15 Feb 2022 16:57:50 +0000 (16:57 +0000)
commitd53f8f8dbe97e4ed7d52e57581d1a8f6e62a7643
tree7958bc45e1ef8dfc1200de051247629dc488198e
parent396520759bd3bf4a557e4edba9a63afc13cc5773
kselftest/arm64: mte: user_mem: introduce tag_offset and tag_len

These can be used to place an MTE tag at an address that is not at a
page size boundary.

The kernel prior to 295cf156231c ("arm64: Avoid premature usercopy failure"),
would infinite loop if an MTE tag was placed not at a PAGE_SIZE boundary.
This is because the kernel checked if the pages were readable by checking the
first byte of each page, but would then fault in the middle of the page due
to the MTE tag.

Signed-off-by: Joey Gouly <joey.gouly@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: Shuah Khan <shuah@kernel.org>
Reviewed-by: Mark Brown <broonie@kernel.org>
Tested-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20220209152240.52788-2-joey.gouly@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
tools/testing/selftests/arm64/mte/check_user_mem.c