diff --git a/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff b/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff index 25f7bd3..1a9f8e4 100644 --- a/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff +++ b/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff @@ -135,7 +135,65 @@ limitations under the License. -#endif /* _INPUT_H */ +#endif /* _UAPI_INPUT_H */ - +--- a/libevdev/libevdev-uinput.c ++++ b/libevdev/libevdev-uinput.c +@@ -29,6 +29,8 @@ + #define UI_SET_PROPBIT _IOW(UINPUT_IOCTL_BASE, 110, int) + #endif + ++static const uint64_t FDSAN_NEW_TAG = 0xD002800; ++ + static struct libevdev_uinput * + alloc_uinput_device(const char *name) + { +@@ -261,17 +263,17 @@ fetch_syspath_and_devnode(struct libevdev_uinput *uinput_dev) + fd = open(buf, O_RDONLY); + if (fd < 0) + continue; +- ++ fdsan_exchange_owner_tag(fd, 0, FDSAN_NEW_TAG); + /* created before UI_DEV_CREATE, or after it finished */ + if (fstat(fd, &st) == -1 || + st.st_ctime < uinput_dev->ctime[0] || + st.st_ctime > uinput_dev->ctime[1]) { +- close(fd); ++ fdsan_close_with_tag(fd, FDSAN_NEW_TAG); + continue; + } + + len = read(fd, buf, sizeof(buf)); +- close(fd); ++ fdsan_close_with_tag(fd, FDSAN_NEW_TAG); + if (len <= 0) + continue; + +@@ -382,7 +384,7 @@ libevdev_uinput_create_from_device(const struct libevdev *dev, int fd, struct li + fd = open("/dev/uinput", O_RDWR|O_CLOEXEC); + if (fd < 0) + goto error; +- ++ fdsan_exchange_owner_tag(fd, 0, FDSAN_NEW_TAG); + new_device->fd_is_managed = 1; + } else if (fd < 0) { + log_bug(NULL, "Invalid fd %d\n", fd); +@@ -429,7 +431,7 @@ error: + rc = -errno; + libevdev_uinput_destroy(new_device); + if (fd != -1 && close_fd_on_error) +- close(fd); ++ fdsan_close_with_tag(fd, FDSAN_NEW_TAG); + return rc; + } + +@@ -442,7 +444,7 @@ libevdev_uinput_destroy(struct libevdev_uinput *uinput_dev) + if (uinput_dev->fd >= 0) { + (void)ioctl(uinput_dev->fd, UI_DEV_DESTROY, NULL); + if (uinput_dev->fd_is_managed) +- close(uinput_dev->fd); ++ fdsan_close_with_tag(uinput_dev->fd, FDSAN_NEW_TAG); + } + free(uinput_dev->syspath); + free(uinput_dev->devnode); --- a/libevdev/libevdev-util.h +++ b/libevdev/libevdev-util.h @@ -42,19 +42,19 @@ startswith(const char *str, size_t len, const char *prefix, size_t plen)