aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJerome Forissier2018-08-06 08:18:59 -0500
committerJérôme Forissier2018-08-10 04:20:08 -0500
commit8742233f31d8acf17c252fbcb981d885144fe633 (patch)
tree94058a29e16d8c5e07274ca7de8f1fac89cde0e7
parentbd0e7c883a3912ed6958928b86fb4283f2014ca0 (diff)
downloadti-optee-client-8742233f31d8acf17c252fbcb981d885144fe633.tar.gz
ti-optee-client-8742233f31d8acf17c252fbcb981d885144fe633.tar.xz
ti-optee-client-8742233f31d8acf17c252fbcb981d885144fe633.zip
benchmark: fix computation of page address
Subtracting the size *in bytes* from a (intptr_t *) is incorrect, since it will subtract n * sizeof(intptr_t). Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
-rw-r--r--libteec/src/teec_benchmark.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libteec/src/teec_benchmark.c b/libteec/src/teec_benchmark.c
index e024f2d1..a59178ca 100644
--- a/libteec/src/teec_benchmark.c
+++ b/libteec/src/teec_benchmark.c
@@ -117,16 +117,16 @@ static TEEC_Result benchmark_get_bench_buf_paddr(uint64_t *paddr_ts_buf,
117static void *mmap_paddr(intptr_t paddr, uint64_t size) 117static void *mmap_paddr(intptr_t paddr, uint64_t size)
118{ 118{
119 int devmem; 119 int devmem;
120 off_t offset = 0; 120 off_t offset;
121 off_t page_addr; 121 off_t page_addr;
122 intptr_t *hw_addr = (intptr_t *)paddr; 122 intptr_t *hw_addr;
123 123
124 devmem = open("/dev/mem", O_RDWR); 124 devmem = open("/dev/mem", O_RDWR);
125 if (!devmem) 125 if (!devmem)
126 return NULL; 126 return NULL;
127 127
128 offset = (off_t)(uintptr_t)hw_addr % getpagesize(); 128 offset = (off_t)paddr % getpagesize();
129 page_addr = (off_t)(uintptr_t)(hw_addr - offset); 129 page_addr = (off_t)(paddr - offset);
130 130
131 hw_addr = (intptr_t *)mmap(0, size, PROT_READ|PROT_WRITE, 131 hw_addr = (intptr_t *)mmap(0, size, PROT_READ|PROT_WRITE,
132 MAP_SHARED, devmem, page_addr); 132 MAP_SHARED, devmem, page_addr);