x86: um: vdso: Add '%rcx' and '%r11' to the syscall clobber list
The 'syscall' instruction clobbers '%rcx' and '%r11', but they are not
listed in the inline Assembly that performs the syscall instruction.
No real bug is found. It wasn't buggy by luck because '%rcx' and '%r11'
are caller-saved registers, and not used in the functions, and the
functions are never inlined.
Add them to the clobber list for code correctness.
Fixes: f1c2bb8b99
("um: implement a x86_64 vDSO")
Signed-off-by: Ammar Faizi <ammarfaizi2@gnuweeb.org>
Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
parent
0438aadfa6
commit
5541992e51
|
@ -17,8 +17,10 @@ int __vdso_clock_gettime(clockid_t clock, struct __kernel_old_timespec *ts)
|
||||||
{
|
{
|
||||||
long ret;
|
long ret;
|
||||||
|
|
||||||
asm("syscall" : "=a" (ret) :
|
asm("syscall"
|
||||||
"0" (__NR_clock_gettime), "D" (clock), "S" (ts) : "memory");
|
: "=a" (ret)
|
||||||
|
: "0" (__NR_clock_gettime), "D" (clock), "S" (ts)
|
||||||
|
: "rcx", "r11", "memory");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -29,8 +31,10 @@ int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
|
||||||
{
|
{
|
||||||
long ret;
|
long ret;
|
||||||
|
|
||||||
asm("syscall" : "=a" (ret) :
|
asm("syscall"
|
||||||
"0" (__NR_gettimeofday), "D" (tv), "S" (tz) : "memory");
|
: "=a" (ret)
|
||||||
|
: "0" (__NR_gettimeofday), "D" (tv), "S" (tz)
|
||||||
|
: "rcx", "r11", "memory");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue