diff --git a/arch/x86/vdso-pie.c b/arch/x86/vdso-pie.c index ed76074e0..6ec2247b8 100644 --- a/arch/x86/vdso-pie.c +++ b/arch/x86/vdso-pie.c @@ -246,7 +246,6 @@ int vdso_proxify(char *who, struct vdso_symtable *sym_rt, VmaEntry *vma, unsigne struct vdso_symtable s = VDSO_SYMTABLE_INIT; size_t size = vma_entry_len(vma); bool remap_rt = true; - struct vdso_mark *m; /* * Find symbols in dumpee vdso. @@ -301,9 +300,6 @@ int vdso_proxify(char *who, struct vdso_symtable *sym_rt, VmaEntry *vma, unsigne * routine we could detect this vdso and do not dump it, since * it's auto-generated every new session if proxy required. */ - m = (void *)vdso_rt_parked_at; - INIT_VDSO_MARK(m); - m->proxy_addr = vma->start; - + vdso_put_mark((void *)vdso_rt_parked_at, vma->start); return 0; } diff --git a/include/vdso.h b/include/vdso.h index 88ef7133b..3f93b3a14 100644 --- a/include/vdso.h +++ b/include/vdso.h @@ -90,15 +90,6 @@ struct vdso_mark { /* Magic number (criuvdso) */ #define VDSO_MARK_SIGNATURE (0x6f73647675697263ULL) -#define VDSO_MARK_INIT \ - { \ - .signature = VDSO_MARK_SIGNATURE, \ - .proxy_addr = VDSO_BAD_ADDR, \ - } - -#define INIT_VDSO_MARK(m) \ - *(m) = (struct vdso_mark)VDSO_MARK_INIT - static inline bool is_vdso_mark(void *addr) { struct vdso_mark *m = addr; @@ -107,6 +98,14 @@ static inline bool is_vdso_mark(void *addr) m->proxy_addr != VDSO_BAD_ADDR; } +static inline void vdso_put_mark(void *where, unsigned long proxy_addr) +{ + struct vdso_mark *m = where; + + m->signature = VDSO_MARK_SIGNATURE; + m->proxy_addr = proxy_addr; +} + extern struct vdso_symtable vdso_sym_rt; extern u64 vdso_pfn; extern int vdso_init(void);