mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 03:53:37 +02:00
kselftest/arm64: mte: user_mem: rework error handling
Future commits will have multiple iterations of tests in this function, so make the error handling assume it will pass and then bail out if there is an error. 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-3-joey.gouly@arm.com Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
d53f8f8dbe
commit
ff0b9aba30
|
|
@ -27,7 +27,7 @@ static int check_usermem_access_fault(int mem_type, int mode, int mapping,
|
|||
size_t len, read_len;
|
||||
void *ptr, *ptr_next;
|
||||
|
||||
err = KSFT_FAIL;
|
||||
err = KSFT_PASS;
|
||||
len = 2 * page_sz;
|
||||
mte_switch_mode(mode, MTE_ALLOW_NON_ZERO_TAG);
|
||||
fd = create_temp_file();
|
||||
|
|
@ -71,14 +71,22 @@ static int check_usermem_access_fault(int mem_type, int mode, int mapping,
|
|||
* mode without fault but may not fail in async mode as per the
|
||||
* implemented MTE userspace support in Arm64 kernel.
|
||||
*/
|
||||
if (mode == MTE_SYNC_ERR &&
|
||||
!cur_mte_cxt.fault_valid && read_len < len) {
|
||||
err = KSFT_PASS;
|
||||
} else if (mode == MTE_ASYNC_ERR &&
|
||||
!cur_mte_cxt.fault_valid && read_len == len) {
|
||||
err = KSFT_PASS;
|
||||
if (cur_mte_cxt.fault_valid)
|
||||
goto usermem_acc_err;
|
||||
|
||||
if (mode == MTE_SYNC_ERR && read_len < len) {
|
||||
/* test passed */
|
||||
} else if (mode == MTE_ASYNC_ERR && read_len == len) {
|
||||
/* test passed */
|
||||
} else {
|
||||
goto usermem_acc_err;
|
||||
}
|
||||
|
||||
goto exit;
|
||||
|
||||
usermem_acc_err:
|
||||
err = KSFT_FAIL;
|
||||
exit:
|
||||
mte_free_memory((void *)ptr, len, mem_type, true);
|
||||
close(fd);
|
||||
return err;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user