In the Linux kernel, the following vulnerability has been resolved: Input: evdev - zero absinfo before partial copy in EVIOCSABS The EVIOCSABS handler copies at most the user supplied ioctl size into an uninitialized on-stack struct input_absinfo: if (copy_from_user(&abs, p, min_t(size_t, size, sizeof(struct input_absinfo)))) The size comes from _IOC_SIZE() of the ioctl command and is therefore fully controlled by userspace. A short size leaves the trailing part of the structure holding whatever was on the kernel stack, and the whole structure is then stored into the device: dev->absinfo[t] = abs; EVIOCGABS hands that back to userspace, disclosing the stale stack bytes. Only the resolution field is currently cleared, which covers the legacy struct layout but not an arbitrarily short size. Zero the structure before the copy so any part not supplied by the caller reads back as zero. The existing resolution fixup is kept, since it also handles a size that partially overlaps that field.
https://git.kernel.org/stable/c/e834e134a32b6a5c600fa539bb49146f617743ab
https://git.kernel.org/stable/c/c0aebb57b73c7d06ad21731099afe119b113c403
https://git.kernel.org/stable/c/af5f7130cbf39e6e12336d0b7a5f6e76e4e1526b
https://git.kernel.org/stable/c/8b852965b8eaf910c314dc346967ed82c8d4f235
https://git.kernel.org/stable/c/89b6ffa4bc10c436fa9aecc73be105124cd58a35
https://git.kernel.org/stable/c/71e5619db11dd6429101bd967230d0321ec5ea26
https://git.kernel.org/stable/c/3dfe48d5307a1ba22c58231d04257737015569ca
https://git.kernel.org/stable/c/30b853a3d71f16bd0aa66b604bc37dd1254a19b3