On 2/17/22 1:48 AM, Greg KH wrote: > On Wed, Feb 16, 2022 at 08:49:35PM +0800, JeffleXu wrote: >>>> +struct cachefiles_req_in { >>>> + uint64_t id; >>>> + uint64_t off; >>>> + uint64_t len; >>> >>> For structures that cross the user/kernel boundry, you have to use the >>> correct types. For this it would be __u64. >> >> OK I will change to __xx style in the next version. >> >> By the way, I can't understand the disadvantage of uintxx_t style. > > The "uint*" types are not valid kernel types. They are userspace types > and do not transfer properly in all arches and situations when crossing > the user/kernel boundry. They are also in a different C "namespace", so > should not even be used in kernel code, although a lot of people do > because they are used to writing userspace C code :( OK. "uint*" types are defined in ISO C library, while it seems that linux kernel doesn't expect any C library [1]. [1] https://kernelnewbies.org/FAQ/LibraryFunctionsInKernel Thanks for explaining it. -- Thanks, Jeffle