From d4ca1bb9a12e64e8b0a09f7a4316eda628f4edf1 Mon Sep 17 00:00:00 2001 From: Louis Burda Date: Tue, 6 Sep 2022 14:30:25 +0200 Subject: Improve register saving and restoring for prime & probe around vmrun --- kmod/asm.h | 0 kmod/cache_types.h | 0 kmod/cachepc.c | 2 -- kmod/cachepc.h | 3 +++ kmod/cachepc_user.h | 0 kmod/device_conf.h | 0 kmod/kvm.c | 5 +++++ kmod/util.c | 0 kmod/util.h | 0 9 files changed, 8 insertions(+), 2 deletions(-) mode change 100755 => 100644 kmod/asm.h mode change 100755 => 100644 kmod/cache_types.h mode change 100755 => 100644 kmod/cachepc.c mode change 100755 => 100644 kmod/cachepc.h mode change 100755 => 100644 kmod/cachepc_user.h mode change 100755 => 100644 kmod/device_conf.h mode change 100755 => 100644 kmod/util.c mode change 100755 => 100644 kmod/util.h (limited to 'kmod') diff --git a/kmod/asm.h b/kmod/asm.h old mode 100755 new mode 100644 diff --git a/kmod/cache_types.h b/kmod/cache_types.h old mode 100755 new mode 100644 diff --git a/kmod/cachepc.c b/kmod/cachepc.c old mode 100755 new mode 100644 index 63500a5..9b2b59c --- a/kmod/cachepc.c +++ b/kmod/cachepc.c @@ -16,8 +16,6 @@ static void build_randomized_list_for_cache_set(cache_ctx *ctx, cacheline **cach static cacheline **allocate_cache_ds(cache_ctx *ctx); static uint16_t get_virt_cache_set(cache_ctx *ctx, void *ptr); -cacheline *cachepc_prime_cl = NULL; - void cachepc_prime_vcall(uintptr_t ret, cacheline *cl) { diff --git a/kmod/cachepc.h b/kmod/cachepc.h old mode 100755 new mode 100644 index eff4661..6237eba --- a/kmod/cachepc.h +++ b/kmod/cachepc.h @@ -45,6 +45,9 @@ extern size_t cachepc_msrmts_count; extern cache_ctx *cachepc_ctx; extern cacheline *cachepc_ds; +extern uint64_t cachepc_regs_tmp[16]; +extern uint64_t cachepc_regs_vm[16]; + /* * Prime phase: fill the target cache (encoded in the size of the data structure) * with the prepared data structure, i.e. with attacker data. diff --git a/kmod/cachepc_user.h b/kmod/cachepc_user.h old mode 100755 new mode 100644 diff --git a/kmod/device_conf.h b/kmod/device_conf.h old mode 100755 new mode 100644 diff --git a/kmod/kvm.c b/kmod/kvm.c index b79ba7f..4c35157 100644 --- a/kmod/kvm.c +++ b/kmod/kvm.c @@ -18,6 +18,11 @@ cacheline *cachepc_ds; EXPORT_SYMBOL(cachepc_ctx); EXPORT_SYMBOL(cachepc_ds); +uint64_t cachepc_regs_tmp[16]; +uint64_t cachepc_regs_vm[16]; +EXPORT_SYMBOL(cachepc_regs_tmp); +EXPORT_SYMBOL(cachepc_regs_vm); + int cachepc_kvm_proc_open(struct inode *inode, struct file *file) { diff --git a/kmod/util.c b/kmod/util.c old mode 100755 new mode 100644 diff --git a/kmod/util.h b/kmod/util.h old mode 100755 new mode 100644 -- cgit v1.2.3-71-gd317