s390/vdso: simplify __arch_get_hw_counter()
Use the passed in vdso_data pointer instead of calculating it again. This is also required as a prerequisite for vdso time namespaces: if a process is part of a time namespace __arch_get_vdso_data() will return a pointer to the time namespace data page instead of the vdso data page, which is not what __arch_get_hw_counter() expects. Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
214b356486
commit
1ba2d6c0fd
1 changed files with 2 additions and 3 deletions
|
@ -24,13 +24,12 @@ static __always_inline const struct vdso_data *__arch_get_vdso_data(void)
|
||||||
|
|
||||||
static inline u64 __arch_get_hw_counter(s32 clock_mode, const struct vdso_data *vd)
|
static inline u64 __arch_get_hw_counter(s32 clock_mode, const struct vdso_data *vd)
|
||||||
{
|
{
|
||||||
const struct vdso_data *vdso = __arch_get_vdso_data();
|
|
||||||
u64 adj, now;
|
u64 adj, now;
|
||||||
|
|
||||||
now = get_tod_clock();
|
now = get_tod_clock();
|
||||||
adj = vdso->arch_data.tod_steering_end - now;
|
adj = vd->arch_data.tod_steering_end - now;
|
||||||
if (unlikely((s64) adj > 0))
|
if (unlikely((s64) adj > 0))
|
||||||
now += (vdso->arch_data.tod_steering_delta < 0) ? (adj >> 15) : -(adj >> 15);
|
now += (vd->arch_data.tod_steering_delta < 0) ? (adj >> 15) : -(adj >> 15);
|
||||||
return now;
|
return now;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue