arm64: vdso: remove broken, redundant sequence counting for timezones
This patch is an arm64 version of ce73ec6db4
("powerpc/vdso: Remove
redundant locking in update_vsyscall_tz()").
Timezone data is not protected, so the sequence counter is not required
to ensure consistency. Furthermore, having multiple paths updating the
counter leads to a race between update_vsyscall and update_vsyscall_tz,
so remove the timezone sequence counting from both the kernel and the
vdso.
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
Родитель
9931faca02
Коммит
bdba0051eb
|
@ -252,10 +252,6 @@ void update_vsyscall(struct timekeeper *tk)
|
||||||
|
|
||||||
void update_vsyscall_tz(void)
|
void update_vsyscall_tz(void)
|
||||||
{
|
{
|
||||||
++vdso_data->tb_seq_count;
|
|
||||||
smp_wmb();
|
|
||||||
vdso_data->tz_minuteswest = sys_tz.tz_minuteswest;
|
vdso_data->tz_minuteswest = sys_tz.tz_minuteswest;
|
||||||
vdso_data->tz_dsttime = sys_tz.tz_dsttime;
|
vdso_data->tz_dsttime = sys_tz.tz_dsttime;
|
||||||
smp_wmb();
|
|
||||||
++vdso_data->tb_seq_count;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,8 +73,6 @@ ENTRY(__kernel_gettimeofday)
|
||||||
/* If tz is NULL, return 0. */
|
/* If tz is NULL, return 0. */
|
||||||
cbz x1, 3f
|
cbz x1, 3f
|
||||||
ldp w4, w5, [vdso_data, #VDSO_TZ_MINWEST]
|
ldp w4, w5, [vdso_data, #VDSO_TZ_MINWEST]
|
||||||
seqcnt_read w9
|
|
||||||
seqcnt_check w9, 1b
|
|
||||||
stp w4, w5, [x1, #TZ_MINWEST]
|
stp w4, w5, [x1, #TZ_MINWEST]
|
||||||
3:
|
3:
|
||||||
mov x0, xzr
|
mov x0, xzr
|
||||||
|
|
Загрузка…
Ссылка в новой задаче