kselftest/arm64: mte: user_mem: add more test types
To expand the test coverage for MTE tags in userspace memory, also perform the test with `write`, `readv` and `writev` syscalls. 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-6-joey.gouly@arm.com Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
b9fc700176
commit
e8d3974f34
|
@ -11,6 +11,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ucontext.h>
|
#include <ucontext.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <sys/uio.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
|
||||||
#include "kselftest.h"
|
#include "kselftest.h"
|
||||||
|
@ -21,6 +22,9 @@ static size_t page_sz;
|
||||||
|
|
||||||
enum test_type {
|
enum test_type {
|
||||||
READ_TEST,
|
READ_TEST,
|
||||||
|
WRITE_TEST,
|
||||||
|
READV_TEST,
|
||||||
|
WRITEV_TEST,
|
||||||
LAST_TEST,
|
LAST_TEST,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -81,6 +85,23 @@ static int check_usermem_access_fault(int mem_type, int mode, int mapping,
|
||||||
case READ_TEST:
|
case READ_TEST:
|
||||||
syscall_len = read(fd, ptr + ptroff, size);
|
syscall_len = read(fd, ptr + ptroff, size);
|
||||||
break;
|
break;
|
||||||
|
case WRITE_TEST:
|
||||||
|
syscall_len = write(fd, ptr + ptroff, size);
|
||||||
|
break;
|
||||||
|
case READV_TEST: {
|
||||||
|
struct iovec iov[1];
|
||||||
|
iov[0].iov_base = ptr + ptroff;
|
||||||
|
iov[0].iov_len = size;
|
||||||
|
syscall_len = readv(fd, iov, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case WRITEV_TEST: {
|
||||||
|
struct iovec iov[1];
|
||||||
|
iov[0].iov_base = ptr + ptroff;
|
||||||
|
iov[0].iov_len = size;
|
||||||
|
syscall_len = writev(fd, iov, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case LAST_TEST:
|
case LAST_TEST:
|
||||||
goto usermem_acc_err;
|
goto usermem_acc_err;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue