On Wed, 2022-11-09 at 20:58 -0500, Stefan Hajnoczi wrote: > > 2. Going from size_t to unsigned int is ABI breakage. This is > > mitigated > > on CPU architectures that share 32-bit/64-bit registers (i.e. > > rax/eax > > on x86-64 and r0/x0/w0 on aarch64). There's no guarantee this > > works > > on all architectures, especially when the calling convention > > passes > > arguments on the stack. > > Good news, I realized that io_uring_prep_getxattr() and friends are > static inline functions. ABI breakage doesn't come into play because > they are compiled into the application. Additionally the inline code was doing the narrowing cast anyway, so there was no narrowing issues. I really should have put this explanation in the commit message though - will remember for next time. > > The const char * to char * API breakage issue still remains but > there's > a pretty good chance that real applications already pass in char *. If an application was passing a const pointer, it is probably preferrable to get a compilation error here - as this would otherwise lead to bugs (since it is very much treated as non-const).