From 7e3e0a395a8692381a5831304169413be8ad4c27 Mon Sep 17 00:00:00 2001 From: mr-liang2504 Date: Mon, 2 Feb 2026 20:33:29 +0800 Subject: [PATCH 1/3] =?UTF-8?q?close=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: mr-liang2504 --- .../libevdev/libevdev_0000.diff | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff b/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff index 25f7bd3..3e13b69 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 = OXD002800; ++ + static struct libevdev_uinput * + alloc_uinput_device(const char *name) + { +@@ -261,17 +263,17 @@ + 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 @@ + 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 @@ + 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 @@ + 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) From 10bf04bf400e4e052ee837926d63c60cc6c4c37c Mon Sep 17 00:00:00 2001 From: mr-liang2504 Date: Mon, 2 Feb 2026 21:20:31 +0800 Subject: [PATCH 2/3] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20libevdev=5F0000.diff?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: mr-liang2504 --- patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff b/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff index 3e13b69..3154795 100644 --- a/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff +++ b/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff @@ -146,7 +146,7 @@ limitations under the License. static struct libevdev_uinput * alloc_uinput_device(const char *name) { -@@ -261,17 +263,17 @@ +@@ -261,17 +263,17 @@ fetch_syspath_and_devnode(struct libevdev_uinput *uinput_dev) fd = open(buf, O_RDONLY); if (fd < 0) continue; @@ -167,7 +167,7 @@ limitations under the License. if (len <= 0) continue; -@@ -382,7 +384,7 @@ +@@ -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; @@ -176,7 +176,7 @@ limitations under the License. new_device->fd_is_managed = 1; } else if (fd < 0) { log_bug(NULL, "Invalid fd %d\n", fd); -@@ -429,7 +431,7 @@ +@@ -429,7 +431,7 @@ error: rc = -errno; libevdev_uinput_destroy(new_device); if (fd != -1 && close_fd_on_error) @@ -185,7 +185,7 @@ limitations under the License. return rc; } -@@ -442,7 +444,7 @@ +@@ -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) From 78947e5def4959e5f89f6c0d151a8a47b707cc77 Mon Sep 17 00:00:00 2001 From: mr-liang2504 Date: Mon, 2 Feb 2026 21:38:39 +0800 Subject: [PATCH 3/3] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20libevdev=5F0000.diff?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: mr-liang2504 --- patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff b/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff index 3154795..1a9f8e4 100644 --- a/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff +++ b/patch/diff_libevdev_mmi/libevdev/libevdev_0000.diff @@ -141,7 +141,7 @@ limitations under the License. #define UI_SET_PROPBIT _IOW(UINPUT_IOCTL_BASE, 110, int) #endif -+static const uint64_t FDSAN_NEW_TAG = OXD002800; ++static const uint64_t FDSAN_NEW_TAG = 0xD002800; + static struct libevdev_uinput * alloc_uinput_device(const char *name)