Commit 041fa528 authored by Dmitry Safonov's avatar Dmitry Safonov Committed by Andrei Vagin

vdso: Cleanup vdso_do_park()

Make it a bit easier to read.
Signed-off-by: 's avatarDmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent 025ad384
...@@ -41,32 +41,36 @@ static int vdso_remap(char *who, unsigned long from, unsigned long to, size_t si ...@@ -41,32 +41,36 @@ static int vdso_remap(char *who, unsigned long from, unsigned long to, size_t si
return 0; return 0;
} }
/* Park runtime vDSO in some safe place where it can be accessible from restorer */ /*
int vdso_do_park(struct vdso_maps *rt, unsigned long park_at, unsigned long park_size) * Park runtime vDSO in some safe place where it can be accessible
* from the restorer
*/
int vdso_do_park(struct vdso_maps *rt, unsigned long park_at,
unsigned long park_size)
{ {
unsigned long vvar_size; unsigned long vvar_size = rt->sym.vvar_size;
unsigned long vdso_size = rt->sym.vdso_size;
unsigned long rt_vvar_park = park_at;
unsigned long rt_vdso_park = park_at;
int ret; int ret;
vvar_size = (rt->sym.vvar_size == VVAR_BAD_SIZE) ? 0 : rt->sym.vvar_size;
BUG_ON((rt->sym.vdso_size + vvar_size) < park_size); if (rt->vvar_start == VVAR_BAD_ADDR) {
BUG_ON(vdso_size < park_size);
if (rt->vvar_start != VVAR_BAD_ADDR) { return vdso_remap("rt-vdso", rt->vdso_start,
if (rt->sym.vdso_before_vvar) { rt_vdso_park, vdso_size);
ret = vdso_remap("rt-vdso", rt->vdso_start, }
park_at, rt->sym.vdso_size);
park_at += rt->sym.vdso_size; BUG_ON((vdso_size + vvar_size) < park_size);
ret |= vdso_remap("rt-vvar", rt->vvar_start,
park_at, rt->sym.vvar_size); if (rt->sym.vdso_before_vvar)
} else { rt_vvar_park = park_at + vdso_size;
ret = vdso_remap("rt-vvar", rt->vvar_start, else
park_at, rt->sym.vvar_size); rt_vdso_park = park_at + vvar_size;
park_at += rt->sym.vvar_size;
ret |= vdso_remap("rt-vdso", rt->vdso_start, ret = vdso_remap("rt-vdso", rt->vdso_start, rt_vdso_park, vdso_size);
park_at, rt->sym.vdso_size); ret |= vdso_remap("rt-vvar", rt->vvar_start, rt_vvar_park, vvar_size);
}
} else
ret = vdso_remap("rt-vdso", rt->vdso_start,
park_at, rt->sym.vdso_size);
return ret; return ret;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment