Simplify the sgx code implemntation by using library function
getauxval() instead of a custom function to get the base address
of vDSO.
Signed-off-by: Tianjia Zhang <[email protected]>
Reviewed-by: Jarkko Sakkinen <[email protected]>
Acked-by: Shuah Khan <[email protected]>
---
tools/testing/selftests/sgx/main.c | 24 ++++--------------------
1 file changed, 4 insertions(+), 20 deletions(-)
diff --git a/tools/testing/selftests/sgx/main.c b/tools/testing/selftests/sgx/main.c
index 724cec700926..5167505fbb46 100644
--- a/tools/testing/selftests/sgx/main.c
+++ b/tools/testing/selftests/sgx/main.c
@@ -15,6 +15,7 @@
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
+#include <sys/auxv.h>
#include "defines.h"
#include "main.h"
#include "../kselftest.h"
@@ -28,24 +29,6 @@ struct vdso_symtab {
Elf64_Word *elf_hashtab;
};
-static void *vdso_get_base_addr(char *envp[])
-{
- Elf64_auxv_t *auxv;
- int i;
-
- for (i = 0; envp[i]; i++)
- ;
-
- auxv = (Elf64_auxv_t *)&envp[i + 1];
-
- for (i = 0; auxv[i].a_type != AT_NULL; i++) {
- if (auxv[i].a_type == AT_SYSINFO_EHDR)
- return (void *)auxv[i].a_un.a_val;
- }
-
- return NULL;
-}
-
static Elf64_Dyn *vdso_get_dyntab(void *addr)
{
Elf64_Ehdr *ehdr = addr;
@@ -162,7 +145,7 @@ static int user_handler(long rdi, long rsi, long rdx, long ursp, long r8, long r
return 0;
}
-int main(int argc, char *argv[], char *envp[])
+int main(int argc, char *argv[])
{
struct sgx_enclave_run run;
struct vdso_symtab symtab;
@@ -203,7 +186,8 @@ int main(int argc, char *argv[], char *envp[])
memset(&run, 0, sizeof(run));
run.tcs = encl.encl_base;
- addr = vdso_get_base_addr(envp);
+ /* Get vDSO base address */
+ addr = (void *)getauxval(AT_SYSINFO_EHDR);
if (!addr)
goto err;
--
2.19.1.3.ge56e4f7
On Sun, Mar 14, 2021 at 07:16:21PM +0800, Tianjia Zhang wrote:
> Simplify the sgx code implemntation by using library function
> getauxval() instead of a custom function to get the base address
> of vDSO.
>
> Signed-off-by: Tianjia Zhang <[email protected]>
> Reviewed-by: Jarkko Sakkinen <[email protected]>
> Acked-by: Shuah Khan <[email protected]>
Shuah, Boris, which tree this should be picked?
/Jarkko
Hi,
On 3/15/21 9:02 PM, Jarkko Sakkinen wrote:
> On Sun, Mar 14, 2021 at 07:16:21PM +0800, Tianjia Zhang wrote:
>> Simplify the sgx code implemntation by using library function
>> getauxval() instead of a custom function to get the base address
>> of vDSO.
>>
>> Signed-off-by: Tianjia Zhang <[email protected]>
>> Reviewed-by: Jarkko Sakkinen <[email protected]>
>> Acked-by: Shuah Khan <[email protected]>
>
> Shuah, Boris, which tree this should be picked?
>
> /Jarkko
>
Take time to look at this.
Best regards,
Tianjia
On Tue, Mar 23, 2021 at 11:08:25AM +0800, Tianjia Zhang wrote:
> Take time to look at this.
A "please" wouldn't hurt.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
On Wed, Mar 24, 2021 at 05:18:03PM +0800, Tianjia Zhang wrote:
> I'm very sorry that my mistake caused your hurt.
You'd have to do a lot more to cause hurt. :-)
> Please take time to look at this, which tree this should be picked?
Sure.
Thx.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
Hi,
On 3/24/21 2:51 AM, Borislav Petkov wrote:
> On Tue, Mar 23, 2021 at 11:08:25AM +0800, Tianjia Zhang wrote:
>> Take time to look at this.
>
> A "please" wouldn't hurt.
>
I'm very sorry that my mistake caused your hurt. Please take time to
look at this, which tree this should be picked?
Best regards,
Tianjia
The following commit has been merged into the x86/sgx branch of tip:
Commit-ID: f33dece70e11ce82a09cb1ea2d7c32347b82c67e
Gitweb: https://git.kernel.org/tip/f33dece70e11ce82a09cb1ea2d7c32347b82c67e
Author: Tianjia Zhang <[email protected]>
AuthorDate: Sun, 14 Mar 2021 19:16:21 +08:00
Committer: Borislav Petkov <[email protected]>
CommitterDate: Wed, 24 Mar 2021 10:59:09 +01:00
selftests/sgx: Use getauxval() to simplify test code
Use the library function getauxval() instead of a custom function to get
the base address of the vDSO.
[ bp: Massage commit message. ]
Signed-off-by: Tianjia Zhang <[email protected]>
Signed-off-by: Borislav Petkov <[email protected]>
Reviewed-by: Jarkko Sakkinen <[email protected]>
Acked-by: Shuah Khan <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
---
tools/testing/selftests/sgx/main.c | 24 ++++--------------------
1 file changed, 4 insertions(+), 20 deletions(-)
diff --git a/tools/testing/selftests/sgx/main.c b/tools/testing/selftests/sgx/main.c
index b117bb8..d304a40 100644
--- a/tools/testing/selftests/sgx/main.c
+++ b/tools/testing/selftests/sgx/main.c
@@ -15,6 +15,7 @@
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
+#include <sys/auxv.h>
#include "defines.h"
#include "main.h"
#include "../kselftest.h"
@@ -28,24 +29,6 @@ struct vdso_symtab {
Elf64_Word *elf_hashtab;
};
-static void *vdso_get_base_addr(char *envp[])
-{
- Elf64_auxv_t *auxv;
- int i;
-
- for (i = 0; envp[i]; i++)
- ;
-
- auxv = (Elf64_auxv_t *)&envp[i + 1];
-
- for (i = 0; auxv[i].a_type != AT_NULL; i++) {
- if (auxv[i].a_type == AT_SYSINFO_EHDR)
- return (void *)auxv[i].a_un.a_val;
- }
-
- return NULL;
-}
-
static Elf64_Dyn *vdso_get_dyntab(void *addr)
{
Elf64_Ehdr *ehdr = addr;
@@ -162,7 +145,7 @@ static int user_handler(long rdi, long rsi, long rdx, long ursp, long r8, long r
return 0;
}
-int main(int argc, char *argv[], char *envp[])
+int main(int argc, char *argv[])
{
struct sgx_enclave_run run;
struct vdso_symtab symtab;
@@ -203,7 +186,8 @@ int main(int argc, char *argv[], char *envp[])
memset(&run, 0, sizeof(run));
run.tcs = encl.encl_base;
- addr = vdso_get_base_addr(envp);
+ /* Get vDSO base address */
+ addr = (void *)getauxval(AT_SYSINFO_EHDR);
if (!addr)
goto err;