On Mon, Mar 21, 2022 at 09:40:56AM +0100, Miklos Szeredi wrote: > On Mon, 21 Mar 2022 at 03:07, Carlos Llamas <cmllamas@xxxxxxxxxx> wrote: > > > > On Fri, Mar 18, 2022 at 08:24:55PM +0100, Miklos Szeredi wrote: > > > On Fri, 18 Mar 2022 at 18:14, Carlos Llamas <cmllamas@xxxxxxxxxx> wrote: > > > > > > > > Kernel uapi headers are supposed to use __[us]{8,16,32,64} defined by > > > > <linux/types.h> instead of 'uint32_t' and similar. This patch changes > > > > all the definitions in this header to use the correct type. Previous > > > > discussion of this topic can be found here: > > > > > > > > https://lkml.org/lkml/2019/6/5/18 > > > > > > This is effectively a revert of these two commits: > > > > > > 4c82456eeb4d ("fuse: fix type definitions in uapi header") > > > 7e98d53086d1 ("Synchronize fuse header with one used in library") > > > > > > And so we've gone full circle and back to having to modify the header > > > to be usable in the cross platform library... > > > > > > And also made lots of churn for what reason exactly? > > > > There are currently only two uapi headers making use of C99 types and > > one is <linux/fuse.h>. This approach results in different typedefs being > > selected when compiling for userspace vs the kernel. > > Why is this a problem if the size of the resulting types is the same? uint* are not "valid" variable types to cross the user/kernel boundary. They are part of the userspace variable type namespace, not the kernel variable type namespace. Linus wrong a long post about this somewhere in the past, I'm sure someone can dig it up... thanks, greg k-h