2021-10-23 20:43:14

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [PATCH] tools/nolibc: x86: Remove `r8`, `r9` and `r10` from the clobber list



On 10/13/21 05:43, Borislav Petkov wrote:
> On Wed, Oct 13, 2021 at 05:23:11AM +0700, Ammar Faizi wrote:
>> "Figure 3.4: Register Usage" is not the answer, if it were, nolibc.h
>> would be broken as it is missing "rdi", "rsi", "rdx" in the clobber list.
>
> It is not about what happens in practice but what the contract is:
> syscall argument registers can potentially get clobbered and userspace
> should treat them as such. Because if the kernel decides to actually
> clobber them for whatever reason and some userspace thing thinks
> otherwise, then it is the userspace thing's problem as it doesn't adhere
> to the well known ABI.
>

Currently the kernel doesn't, but some past kernels have zeroed some of
these registers rather than preserving them.

-hpa