kernel: Fix compilation for non-gki kernels
Co-authored-by: TwinbornPlate75 <3342733415@qq.com>
This commit is contained in:
@@ -10,6 +10,9 @@
|
|||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/version.h>
|
#include <linux/version.h>
|
||||||
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)
|
||||||
|
#include <linux/sched/task.h>
|
||||||
|
#endif
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
|
||||||
#include <linux/compiler_types.h>
|
#include <linux/compiler_types.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -418,7 +421,11 @@ void persistent_allow_list()
|
|||||||
goto put_task;
|
goto put_task;
|
||||||
}
|
}
|
||||||
cb->func = do_persistent_allow_list;
|
cb->func = do_persistent_allow_list;
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 7, 0)
|
||||||
task_work_add(tsk, cb, TWA_RESUME);
|
task_work_add(tsk, cb, TWA_RESUME);
|
||||||
|
#else
|
||||||
|
task_work_add(tsk, cb, true);
|
||||||
|
#endif
|
||||||
|
|
||||||
put_task:
|
put_task:
|
||||||
put_task_struct(tsk);
|
put_task_struct(tsk);
|
||||||
|
|||||||
@@ -243,7 +243,6 @@ static void ksu_wrapper_show_fdinfo(struct seq_file *m, struct file *f) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)
|
|
||||||
static ssize_t ksu_wrapper_copy_file_range(struct file *f1, loff_t off1, struct file *f2,
|
static ssize_t ksu_wrapper_copy_file_range(struct file *f1, loff_t off1, struct file *f2,
|
||||||
loff_t off2, size_t sz, unsigned int flags) {
|
loff_t off2, size_t sz, unsigned int flags) {
|
||||||
// TODO: determine which file to use
|
// TODO: determine which file to use
|
||||||
@@ -255,6 +254,7 @@ static ssize_t ksu_wrapper_copy_file_range(struct file *f1, loff_t off1, struct
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)
|
||||||
static loff_t ksu_wrapper_remap_file_range(struct file *file_in, loff_t pos_in,
|
static loff_t ksu_wrapper_remap_file_range(struct file *file_in, loff_t pos_in,
|
||||||
struct file *file_out, loff_t pos_out,
|
struct file *file_out, loff_t pos_out,
|
||||||
loff_t len, unsigned int remap_flags) {
|
loff_t len, unsigned int remap_flags) {
|
||||||
@@ -266,6 +266,15 @@ static loff_t ksu_wrapper_remap_file_range(struct file *file_in, loff_t pos_in,
|
|||||||
}
|
}
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int ksu_wrapper_fadvise(struct file *fp, loff_t off1, loff_t off2, int flags) {
|
||||||
|
struct ksu_file_wrapper* data = fp->private_data;
|
||||||
|
struct file* orig = data->orig;
|
||||||
|
if (orig->f_op->fadvise) {
|
||||||
|
return orig->f_op->fadvise(orig, off1, off2, flags);
|
||||||
|
}
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
static int ksu_wrapper_clone_file_range(struct file *file_in, loff_t pos_in,
|
static int ksu_wrapper_clone_file_range(struct file *file_in, loff_t pos_in,
|
||||||
struct file *file_out, loff_t pos_out, u64 len) {
|
struct file *file_out, loff_t pos_out, u64 len) {
|
||||||
@@ -290,15 +299,6 @@ static ssize_t ksu_wrapper_dedupe_file_range(struct file *src_file, u64 loff,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int ksu_wrapper_fadvise(struct file *fp, loff_t off1, loff_t off2, int flags) {
|
|
||||||
struct ksu_file_wrapper* data = fp->private_data;
|
|
||||||
struct file* orig = data->orig;
|
|
||||||
if (orig->f_op->fadvise) {
|
|
||||||
return orig->f_op->fadvise(orig, off1, off2, flags);
|
|
||||||
}
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ksu_wrapper_release(struct inode *inode, struct file *filp) {
|
static int ksu_wrapper_release(struct inode *inode, struct file *filp) {
|
||||||
ksu_delete_file_wrapper(filp->private_data);
|
ksu_delete_file_wrapper(filp->private_data);
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -10,6 +10,9 @@
|
|||||||
#include <linux/file.h>
|
#include <linux/file.h>
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/version.h>
|
#include <linux/version.h>
|
||||||
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)
|
||||||
|
#include <linux/sched/task.h>
|
||||||
|
#endif
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0)
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0)
|
||||||
#include <linux/input-event-codes.h>
|
#include <linux/input-event-codes.h>
|
||||||
#else
|
#else
|
||||||
@@ -253,7 +256,11 @@ first_app_process:
|
|||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
init_task = rcu_dereference(current->parent);
|
init_task = rcu_dereference(current->parent);
|
||||||
if (init_task) {
|
if (init_task) {
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||||||
task_work_add(init_task, &on_post_fs_data_cb, TWA_RESUME);
|
task_work_add(init_task, &on_post_fs_data_cb, TWA_RESUME);
|
||||||
|
#else
|
||||||
|
task_work_add(init_task, &on_post_fs_data_cb, true);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
||||||
|
|||||||
@@ -383,10 +383,16 @@ static int do_get_wrapper_fd(void __user *arg) {
|
|||||||
|
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0)
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0)
|
||||||
#define getfd_secure anon_inode_create_getfd
|
#define getfd_secure anon_inode_create_getfd
|
||||||
#else
|
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)
|
||||||
#define getfd_secure anon_inode_getfd_secure
|
#define getfd_secure anon_inode_getfd_secure
|
||||||
|
#else
|
||||||
|
#define getfd_secure anon_inode_getfd
|
||||||
#endif
|
#endif
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)
|
||||||
ret = getfd_secure("[ksu_fdwrapper]", &data->ops, data, f->f_flags, NULL);
|
ret = getfd_secure("[ksu_fdwrapper]", &data->ops, data, f->f_flags, NULL);
|
||||||
|
#else
|
||||||
|
ret = getfd_secure("[ksu_fdwrapper]", &data->ops, data, f->f_flags);
|
||||||
|
#endif
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
pr_err("ksu_fdwrapper: getfd failed: %d\n", ret);
|
pr_err("ksu_fdwrapper: getfd failed: %d\n", ret);
|
||||||
goto put_wrapper_data;
|
goto put_wrapper_data;
|
||||||
|
|||||||
Reference in New Issue
Block a user