diff --git a/binder/binder.c b/binder/binder.c index 1b97cfc..8901fd2 100644 --- a/binder/binder.c +++ b/binder/binder.c @@ -2236,7 +2236,9 @@ static void binder_deferred_fd_close(int fd) if (!twcb) return; init_task_work(&twcb->twork, binder_do_fd_close); -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,11,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,19,0)) + twcb->file = close_fd_get_file(fd); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5,11,0)) close_fd_get_file(fd, &twcb->file); #else __close_fd_get_file(fd, &twcb->file); diff --git a/binder/deps.c b/binder/deps.c index 726b1b1..a7c5763 100644 --- a/binder/deps.c +++ b/binder/deps.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -69,10 +70,15 @@ static unsigned long kallsyms_lookup_name_wrapper(const char *name) #endif } +static int (*close_fd_get_file_ptr)(unsigned int fd +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,19,0)) + , struct file **res +#endif + ) = NULL; -static int (*close_fd_get_file_ptr)(unsigned int fd, struct file **res) = NULL; - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,11,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,19,0)) +struct file *close_fd_get_file(unsigned int fd) +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5,11,0)) int close_fd_get_file(unsigned int fd, struct file **res) #else int __close_fd_get_file(unsigned int fd, struct file **res) @@ -84,7 +90,12 @@ int __close_fd_get_file(unsigned int fd, struct file **res) #else close_fd_get_file_ptr = kallsyms_lookup_name_wrapper("__close_fd_get_file"); #endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,19,0)) + return close_fd_get_file_ptr(fd); +#else return close_fd_get_file_ptr(fd, res); +#endif } static int (*can_nice_ptr)(const struct task_struct *, const int) = NULL;