diff --git a/kernel/allowlist.c b/kernel/allowlist.c index d8d5007f..d728abdd 100644 --- a/kernel/allowlist.c +++ b/kernel/allowlist.c @@ -129,12 +129,12 @@ void do_persistent_allow_list(struct work_struct *work) } // store magic and version - if (kernel_write_compat(fp, &magic, sizeof(magic), &off) != sizeof(magic)) { + if (ksu_kernel_write_compat(fp, &magic, sizeof(magic), &off) != sizeof(magic)) { pr_err("save_allow_list write magic failed.\n"); goto exit; } - if (kernel_write_compat(fp, &version, sizeof(version), &off) != + if (ksu_kernel_write_compat(fp, &version, sizeof(version), &off) != sizeof(version)) { pr_err("save_allow_list write version failed.\n"); goto exit; @@ -144,8 +144,8 @@ void do_persistent_allow_list(struct work_struct *work) p = list_entry(pos, struct perm_data, list); pr_info("save allow list uid :%d, allow: %d\n", p->uid, p->allow); - kernel_write_compat(fp, &p->uid, sizeof(p->uid), &off); - kernel_write_compat(fp, &p->allow, sizeof(p->allow), &off); + ksu_kernel_write_compat(fp, &p->uid, sizeof(p->uid), &off); + ksu_kernel_write_compat(fp, &p->allow, sizeof(p->allow), &off); } exit: @@ -195,13 +195,13 @@ void do_load_allow_list(struct work_struct *work) } // verify magic - if (kernel_read_compat(fp, &magic, sizeof(magic), &off) != sizeof(magic) || + if (ksu_kernel_read_compat(fp, &magic, sizeof(magic), &off) != sizeof(magic) || magic != FILE_MAGIC) { pr_err("allowlist file invalid: %d!\n", magic); goto exit; } - if (kernel_read_compat(fp, &version, sizeof(version), &off) != + if (ksu_kernel_read_compat(fp, &version, sizeof(version), &off) != sizeof(version)) { pr_err("allowlist read version: %d failed\n", version); goto exit; @@ -212,12 +212,12 @@ void do_load_allow_list(struct work_struct *work) while (true) { u32 uid; bool allow = false; - ret = kernel_read_compat(fp, &uid, sizeof(uid), &off); + ret = ksu_kernel_read_compat(fp, &uid, sizeof(uid), &off); if (ret <= 0) { pr_info("load_allow_list read err: %d\n", ret); break; } - ret = kernel_read_compat(fp, &allow, sizeof(allow), &off); + ret = ksu_kernel_read_compat(fp, &allow, sizeof(allow), &off); pr_info("load_allow_uid: %d, allow: %d\n", uid, allow); diff --git a/kernel/apk_sign.c b/kernel/apk_sign.c index 52f5d926..94532e07 100644 --- a/kernel/apk_sign.c +++ b/kernel/apk_sign.c @@ -30,10 +30,10 @@ check_v2_signature(char *path, unsigned expected_size, unsigned expected_hash) for (i = 0;; ++i) { unsigned short n; pos = generic_file_llseek(fp, -i - 2, SEEK_END); - kernel_read_compat(fp, &n, 2, &pos); + ksu_kernel_read_compat(fp, &n, 2, &pos); if (n == i) { pos -= 22; - kernel_read_compat(fp, &size4, 4, &pos); + ksu_kernel_read_compat(fp, &size4, 4, &pos); if ((size4 ^ 0xcafebabeu) == 0xccfbf1eeu) { break; } @@ -46,17 +46,17 @@ check_v2_signature(char *path, unsigned expected_size, unsigned expected_hash) pos += 12; // offset - kernel_read_compat(fp, &size4, 0x4, &pos); + ksu_kernel_read_compat(fp, &size4, 0x4, &pos); pos = size4 - 0x18; - kernel_read_compat(fp, &size8, 0x8, &pos); - kernel_read_compat(fp, buffer, 0x10, &pos); + ksu_kernel_read_compat(fp, &size8, 0x8, &pos); + ksu_kernel_read_compat(fp, buffer, 0x10, &pos); if (strcmp((char *)buffer, "APK Sig Block 42")) { goto clean; } pos = size4 - (size8 + 0x8); - kernel_read_compat(fp, &size_of_block, 0x8, &pos); + ksu_kernel_read_compat(fp, &size_of_block, 0x8, &pos); if (size_of_block != size8) { goto clean; } @@ -64,37 +64,37 @@ check_v2_signature(char *path, unsigned expected_size, unsigned expected_hash) for (;;) { uint32_t id; uint32_t offset; - kernel_read_compat(fp, &size8, 0x8, &pos); // sequence length + ksu_kernel_read_compat(fp, &size8, 0x8, &pos); // sequence length if (size8 == size_of_block) { break; } - kernel_read_compat(fp, &id, 0x4, &pos); // id + ksu_kernel_read_compat(fp, &id, 0x4, &pos); // id offset = 4; pr_info("id: 0x%08x\n", id); if ((id ^ 0xdeadbeefu) == 0xafa439f5u || (id ^ 0xdeadbeefu) == 0x2efed62f) { - kernel_read_compat(fp, &size4, 0x4, + ksu_kernel_read_compat(fp, &size4, 0x4, &pos); // signer-sequence length - kernel_read_compat(fp, &size4, 0x4, &pos); // signer length - kernel_read_compat(fp, &size4, 0x4, + ksu_kernel_read_compat(fp, &size4, 0x4, &pos); // signer length + ksu_kernel_read_compat(fp, &size4, 0x4, &pos); // signed data length offset += 0x4 * 3; - kernel_read_compat(fp, &size4, 0x4, + ksu_kernel_read_compat(fp, &size4, 0x4, &pos); // digests-sequence length pos += size4; offset += 0x4 + size4; - kernel_read_compat(fp, &size4, 0x4, + ksu_kernel_read_compat(fp, &size4, 0x4, &pos); // certificates length - kernel_read_compat(fp, &size4, 0x4, + ksu_kernel_read_compat(fp, &size4, 0x4, &pos); // certificate length offset += 0x4 * 2; #if 0 int hash = 1; signed char c; for (unsigned i = 0; i < size4; ++i) { - kernel_read_compat(fp, &c, 0x1, &pos); + ksu_kernel_read_compat(fp, &c, 0x1, &pos); hash = 31 * hash + c; } offset += size4; @@ -104,7 +104,7 @@ check_v2_signature(char *path, unsigned expected_size, unsigned expected_hash) int hash = 1; signed char c; for (unsigned i = 0; i < size4; ++i) { - kernel_read_compat(fp, &c, 0x1, &pos); + ksu_kernel_read_compat(fp, &c, 0x1, &pos); hash = 31 * hash + c; } offset += size4; diff --git a/kernel/kernel_compat.c b/kernel/kernel_compat.c index 84bdbe81..339650fe 100644 --- a/kernel/kernel_compat.c +++ b/kernel/kernel_compat.c @@ -5,7 +5,7 @@ #include "linux/errno.h" struct key *init_session_keyring = NULL; #endif -ssize_t kernel_read_compat(struct file *p, void *buf, size_t count, loff_t *pos){ +ssize_t ksu_kernel_read_compat(struct file *p, void *buf, size_t count, loff_t *pos){ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) return kernel_read(p, buf, count, pos); #else @@ -19,7 +19,7 @@ ssize_t kernel_read_compat(struct file *p, void *buf, size_t count, loff_t *pos) #endif } -ssize_t kernel_write_compat(struct file *p, const void *buf, size_t count, loff_t *pos){ +ssize_t ksu_kernel_write_compat(struct file *p, const void *buf, size_t count, loff_t *pos){ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) return kernel_write(p, buf, count, pos); #else diff --git a/kernel/kernel_compat.h b/kernel/kernel_compat.h index c2fe695f..8daa4048 100644 --- a/kernel/kernel_compat.h +++ b/kernel/kernel_compat.h @@ -7,8 +7,8 @@ extern struct key *init_session_keyring; -extern ssize_t kernel_read_compat(struct file *p, void *buf, size_t count, loff_t *pos); -extern ssize_t kernel_write_compat(struct file *p, const void *buf, size_t count, loff_t *pos); +extern ssize_t ksu_kernel_read_compat(struct file *p, void *buf, size_t count, loff_t *pos); +extern ssize_t ksu_kernel_write_compat(struct file *p, const void *buf, size_t count, loff_t *pos); #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) static inline int install_session_keyring(struct key *keyring) diff --git a/kernel/uid_observer.c b/kernel/uid_observer.c index 5af99a01..2bd148be 100644 --- a/kernel/uid_observer.c +++ b/kernel/uid_observer.c @@ -56,13 +56,13 @@ static void do_update_uid(struct work_struct *work) loff_t line_start = 0; char buf[128]; for (;;) { - ssize_t count = kernel_read_compat(fp, &chr, sizeof(chr), &pos); + ssize_t count = ksu_kernel_read_compat(fp, &chr, sizeof(chr), &pos); if (count != sizeof(chr)) break; if (chr != '\n') continue; - count = kernel_read_compat(fp, buf, sizeof(buf), &line_start); + count = ksu_kernel_read_compat(fp, buf, sizeof(buf), &line_start); struct uid_data *data = kmalloc(sizeof(struct uid_data), GFP_ATOMIC);