Re: [PATCH 2/3] vmsplice: make vmsplice a trivial wrapper for preadv2/pwritev2
Linus Torvalds <[email protected]>
| Newsgroups | org.kernel.vger.linux-api,dev.linux.lists.patches,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.netdev,org.kvack.linux-mm |
|---|---|
| Message-ID | <CAHk-=wjkZSAhxykvG6tQM5DnBoS30_XCKkYpCsQwEGcxJb=i3Q@mail.gmail.com> |
On Fri, 5 Jun 2026 at 02:33, Florian Weimer <[email protected]> wrote: > > * Linus Torvalds: > > > x86 really doesn't *care*. If the caller zero-extends or leaves high > > bits set randomly, according to the x86 ABI that's perfectly fine: the > > callee will only care about the low 32 bits. So the high bits are > > simply not relevant for the ABI. > > Please note that Clang does not implement the x86-64 ABI and requires > zero extension. We see increasing problems from that, now that we have > more C code calling Rust code. Uhhuh. But that is only specific to 'bool', right? If it were to have the same issue that powerpc(*) had - that 'unsigned int' has to be passed to functions with well-defined high bits - that would be bad. And I'm pretty sure that clang doesn't do that. Anyway, for the kernel, this shouldn't be an issue simply because we typically avoid 'bool' in arguments or structures that are exposed to outside. (I say 'typically' because I'm sure it happens in some broken UAPI thing anyway). Linus (*) I may mis-remember. Maybe it was s390, not powerpc. The s390 compat layer independently had a similar issue wrt pointers, where bit 31 had to be cleared. s390 dropped the 31-bit code entirely fairly recently, but it caused some "interesting" code in the already disgusting syscall argument handling wrapper macros.