Message ID | 20210610083021.392269-3-jarkko@kernel.org (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | [v8,1/5] selftests/sgx: Rename 'eenter' and 'sgx_call_vdso' | expand |
On 6/10/21 2:30 AM, Jarkko Sakkinen wrote: > Often, it's useful to check whether /proc/self/maps looks sane when > dealing with memory mapped objects, especially when they are JIT'ish > dynamically constructed objects. Therefore, dump "/dev/sgx_enclave" > matching lines from the memory map in FIXTURE_SETUP(). > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org> > --- > tools/testing/selftests/sgx/main.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/tools/testing/selftests/sgx/main.c b/tools/testing/selftests/sgx/main.c > index 6da19b6bf287..14030f8b85ff 100644 > --- a/tools/testing/selftests/sgx/main.c > +++ b/tools/testing/selftests/sgx/main.c > @@ -117,6 +117,8 @@ FIXTURE_SETUP(enclave) > Elf64_Sym *sgx_enter_enclave_sym = NULL; > struct vdso_symtab symtab; > struct encl_segment *seg; > + char maps_line[256]; > + FILE *maps_file; > unsigned int i; > void *addr; > > @@ -167,6 +169,18 @@ FIXTURE_SETUP(enclave) > memset(&self->run, 0, sizeof(self->run)); > self->run.tcs = self->encl.encl_base; > > + maps_file = fopen("/proc/self/maps", "r"); I almost applied these. Does this require root access, if so, please add logic to skip the test if non-root user runs it. Same comments for all other paths that might require root access. thanks, -- Shuah
On 6/11/21 3:45 PM, Shuah Khan wrote: >> >> @@ -167,6 +169,18 @@ FIXTURE_SETUP(enclave) >> memset(&self->run, 0, sizeof(self->run)); >> self->run.tcs = self->encl.encl_base; >> + maps_file = fopen("/proc/self/maps", "r"); > > I almost applied these. Does this require root access, if so, > please add logic to skip the test if non-root user runs it. > > Same comments for all other paths that might require root access. This specifically doesn't require root. Anything can read its own /proc/self/maps file.
On Fri, Jun 11, 2021 at 04:45:19PM -0600, Shuah Khan wrote: > On 6/10/21 2:30 AM, Jarkko Sakkinen wrote: > > Often, it's useful to check whether /proc/self/maps looks sane when > > dealing with memory mapped objects, especially when they are JIT'ish > > dynamically constructed objects. Therefore, dump "/dev/sgx_enclave" > > matching lines from the memory map in FIXTURE_SETUP(). > > > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org> > > --- > > tools/testing/selftests/sgx/main.c | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/tools/testing/selftests/sgx/main.c b/tools/testing/selftests/sgx/main.c > > index 6da19b6bf287..14030f8b85ff 100644 > > --- a/tools/testing/selftests/sgx/main.c > > +++ b/tools/testing/selftests/sgx/main.c > > @@ -117,6 +117,8 @@ FIXTURE_SETUP(enclave) > > Elf64_Sym *sgx_enter_enclave_sym = NULL; > > struct vdso_symtab symtab; > > struct encl_segment *seg; > > + char maps_line[256]; > > + FILE *maps_file; > > unsigned int i; > > void *addr; > > @@ -167,6 +169,18 @@ FIXTURE_SETUP(enclave) > > memset(&self->run, 0, sizeof(self->run)); > > self->run.tcs = self->encl.encl_base; > > + maps_file = fopen("/proc/self/maps", "r"); > > I almost applied these. Does this require root access, if so, > please add logic to skip the test if non-root user runs it. > > Same comments for all other paths that might require root access. As Dave stated, it does not. A process can inspect its own state through /proc/self path. E.g. Chrome web browser uses /proc/self/exe to initialize multiple instances of itself for browser tabs... As far as other things go, this patch set does not bind to any other new OS resources. > thanks, > -- Shuah /Jarkko
On 6/11/21 10:27 PM, Jarkko Sakkinen wrote: > On Fri, Jun 11, 2021 at 04:45:19PM -0600, Shuah Khan wrote: >> On 6/10/21 2:30 AM, Jarkko Sakkinen wrote: >>> Often, it's useful to check whether /proc/self/maps looks sane when >>> dealing with memory mapped objects, especially when they are JIT'ish >>> dynamically constructed objects. Therefore, dump "/dev/sgx_enclave" >>> matching lines from the memory map in FIXTURE_SETUP(). >>> >>> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org> >>> --- >>> tools/testing/selftests/sgx/main.c | 14 ++++++++++++++ >>> 1 file changed, 14 insertions(+) >>> >>> diff --git a/tools/testing/selftests/sgx/main.c b/tools/testing/selftests/sgx/main.c >>> index 6da19b6bf287..14030f8b85ff 100644 >>> --- a/tools/testing/selftests/sgx/main.c >>> +++ b/tools/testing/selftests/sgx/main.c >>> @@ -117,6 +117,8 @@ FIXTURE_SETUP(enclave) >>> Elf64_Sym *sgx_enter_enclave_sym = NULL; >>> struct vdso_symtab symtab; >>> struct encl_segment *seg; >>> + char maps_line[256]; >>> + FILE *maps_file; >>> unsigned int i; >>> void *addr; >>> @@ -167,6 +169,18 @@ FIXTURE_SETUP(enclave) >>> memset(&self->run, 0, sizeof(self->run)); >>> self->run.tcs = self->encl.encl_base; >>> + maps_file = fopen("/proc/self/maps", "r"); >> >> I almost applied these. Does this require root access, if so, >> please add logic to skip the test if non-root user runs it. >> >> Same comments for all other paths that might require root access. > > As Dave stated, it does not. A process can inspect its own state > through /proc/self path. E.g. Chrome web browser uses /proc/self/exe > to initialize multiple instances of itself for browser tabs... > Ah yes. I missed the self part. Thanks for clarifying. > As far as other things go, this patch set does not bind to any other > new OS resources. > Thank you. I will apply these for 5.14-rc1. thanks, -- Shuah
On Mon, Jun 14, 2021 at 10:45:43AM -0600, Shuah Khan wrote: > On 6/11/21 10:27 PM, Jarkko Sakkinen wrote: > > On Fri, Jun 11, 2021 at 04:45:19PM -0600, Shuah Khan wrote: > > > On 6/10/21 2:30 AM, Jarkko Sakkinen wrote: > > > > Often, it's useful to check whether /proc/self/maps looks sane when > > > > dealing with memory mapped objects, especially when they are JIT'ish > > > > dynamically constructed objects. Therefore, dump "/dev/sgx_enclave" > > > > matching lines from the memory map in FIXTURE_SETUP(). > > > > > > > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org> > > > > --- > > > > tools/testing/selftests/sgx/main.c | 14 ++++++++++++++ > > > > 1 file changed, 14 insertions(+) > > > > > > > > diff --git a/tools/testing/selftests/sgx/main.c b/tools/testing/selftests/sgx/main.c > > > > index 6da19b6bf287..14030f8b85ff 100644 > > > > --- a/tools/testing/selftests/sgx/main.c > > > > +++ b/tools/testing/selftests/sgx/main.c > > > > @@ -117,6 +117,8 @@ FIXTURE_SETUP(enclave) > > > > Elf64_Sym *sgx_enter_enclave_sym = NULL; > > > > struct vdso_symtab symtab; > > > > struct encl_segment *seg; > > > > + char maps_line[256]; > > > > + FILE *maps_file; > > > > unsigned int i; > > > > void *addr; > > > > @@ -167,6 +169,18 @@ FIXTURE_SETUP(enclave) > > > > memset(&self->run, 0, sizeof(self->run)); > > > > self->run.tcs = self->encl.encl_base; > > > > + maps_file = fopen("/proc/self/maps", "r"); > > > > > > I almost applied these. Does this require root access, if so, > > > please add logic to skip the test if non-root user runs it. > > > > > > Same comments for all other paths that might require root access. > > > > As Dave stated, it does not. A process can inspect its own state > > through /proc/self path. E.g. Chrome web browser uses /proc/self/exe > > to initialize multiple instances of itself for browser tabs... > > > > Ah yes. I missed the self part. Thanks for clarifying. > > > As far as other things go, this patch set does not bind to any other > > new OS resources. > > > > Thank you. I will apply these for 5.14-rc1. Thank you! > thanks, > -- Shuah /Jarkko
diff --git a/tools/testing/selftests/sgx/main.c b/tools/testing/selftests/sgx/main.c index 6da19b6bf287..14030f8b85ff 100644 --- a/tools/testing/selftests/sgx/main.c +++ b/tools/testing/selftests/sgx/main.c @@ -117,6 +117,8 @@ FIXTURE_SETUP(enclave) Elf64_Sym *sgx_enter_enclave_sym = NULL; struct vdso_symtab symtab; struct encl_segment *seg; + char maps_line[256]; + FILE *maps_file; unsigned int i; void *addr; @@ -167,6 +169,18 @@ FIXTURE_SETUP(enclave) memset(&self->run, 0, sizeof(self->run)); self->run.tcs = self->encl.encl_base; + maps_file = fopen("/proc/self/maps", "r"); + if (maps_file != NULL) { + while (fgets(maps_line, sizeof(maps_line), maps_file) != NULL) { + maps_line[strlen(maps_line) - 1] = '\0'; + + if (strstr(maps_line, "/dev/sgx_enclave")) + TH_LOG("%s", maps_line); + } + + fclose(maps_file); + } + err: if (!sgx_enter_enclave_sym) encl_delete(&self->encl);
Often, it's useful to check whether /proc/self/maps looks sane when dealing with memory mapped objects, especially when they are JIT'ish dynamically constructed objects. Therefore, dump "/dev/sgx_enclave" matching lines from the memory map in FIXTURE_SETUP(). Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org> --- tools/testing/selftests/sgx/main.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)