On Tue, Jul 28, 2020 at 3:58 PM Arnd Bergmann <arnd@xxxxxxxx> wrote: > > On Tue, Jul 28, 2020 at 3:06 PM Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > > > > On Tue, Jul 28, 2020 at 02:22:29PM +0200, Linus Walleij wrote: > > > On Mon, Jul 27, 2020 at 3:17 PM Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > > > > > > > Here are my latest warnings on linux-next from Friday. > > > > > > Thanks for sharing this Dan, very interesting findings. > > > > > > > drivers/gpio/gpiolib-cdev.c:473 lineevent_read() warn: check that 'ge' doesn't leak information (struct has a hole after 'id') > > > > > > We are revamping the ABI for 64bit compatibility so we are now running > > > pahole on our stuff. I suppose we need to think about mending this old ABI > > > as well. > > > > Yeah... But this one is a false positive. It's not super hard for me > > to silence it actually. I'll take care of it. It could be a while > > before I push this to the public repository though... > > The lineevent_read() function still needs to be fixed to support > 32-bit compat mode on x86, which is independent of the warning. > > Something like > > static int lineevent_put_data(void __user *uptr, struct gpioevent_data *ge) > { > #ifdef __x86_64__ > /* i386 has no padding after 'id' */ > if (in_ia32_syscall()) { > struct { > compat_u64 timestamp __packed; > u32 id; > } compat_ge = { ge->timestamp, ge->id }; > > if (copy_to_user(uptr, &compat_ge, sizeof(compat_ge))) > return -EFAULT; > > return sizeof(compat_ge); > } > #endif > > if (copy_to_user(uptr, ge, sizeof(*ge)) > return -EFAULT; > > return sizeof(*ge); > } > > Arnd Hi Arnd, Andy actually had a patch for that but since this isn't a regression (it never worked), we decided to leave it as it is and get it right in v2 API. Bartosz