You've already forked KernelSU
mirror of
https://github.com/tiann/KernelSU.git
synced 2025-08-27 23:46:34 +00:00
kernel: refactor PR_REAL_REGS
This commit is contained in:
@@ -83,4 +83,10 @@
|
|||||||
#define PT_REGS_SP(x) (__PT_REGS_CAST(x)->__PT_SP_REG)
|
#define PT_REGS_SP(x) (__PT_REGS_CAST(x)->__PT_SP_REG)
|
||||||
#define PT_REGS_IP(x) (__PT_REGS_CAST(x)->__PT_IP_REG)
|
#define PT_REGS_IP(x) (__PT_REGS_CAST(x)->__PT_IP_REG)
|
||||||
|
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0)
|
||||||
|
#define PT_REAL_REGS(regs) ((struct pt_regs *)PT_REGS_PARM1(regs))
|
||||||
|
#else
|
||||||
|
#define PT_REAL_REGS(regs) ((regs))
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -542,11 +542,7 @@ int ksu_handle_setuid(struct cred *new, const struct cred *old)
|
|||||||
|
|
||||||
static int handler_pre(struct kprobe *p, struct pt_regs *regs)
|
static int handler_pre(struct kprobe *p, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0)
|
struct pt_regs *real_regs = PT_REAL_REGS(regs);
|
||||||
struct pt_regs *real_regs = (struct pt_regs *)PT_REGS_PARM1(regs);
|
|
||||||
#else
|
|
||||||
struct pt_regs *real_regs = regs;
|
|
||||||
#endif
|
|
||||||
int option = (int)PT_REGS_PARM1(real_regs);
|
int option = (int)PT_REGS_PARM1(real_regs);
|
||||||
unsigned long arg2 = (unsigned long)PT_REGS_PARM2(real_regs);
|
unsigned long arg2 = (unsigned long)PT_REGS_PARM2(real_regs);
|
||||||
unsigned long arg3 = (unsigned long)PT_REGS_PARM3(real_regs);
|
unsigned long arg3 = (unsigned long)PT_REGS_PARM3(real_regs);
|
||||||
|
|||||||
@@ -474,11 +474,7 @@ static int execve_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
|||||||
|
|
||||||
static int sys_execve_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
static int sys_execve_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0)
|
struct pt_regs *real_regs = PT_REAL_REGS(regs);
|
||||||
struct pt_regs *real_regs = (struct pt_regs *)PT_REGS_PARM1(regs);
|
|
||||||
#else
|
|
||||||
struct pt_regs *real_regs = regs;
|
|
||||||
#endif
|
|
||||||
const char __user **filename_user = (const char **)&PT_REGS_PARM1(real_regs);
|
const char __user **filename_user = (const char **)&PT_REGS_PARM1(real_regs);
|
||||||
const char __user *const __user *__argv =
|
const char __user *const __user *__argv =
|
||||||
(const char __user *const __user *)PT_REGS_PARM2(real_regs);
|
(const char __user *const __user *)PT_REGS_PARM2(real_regs);
|
||||||
@@ -511,11 +507,7 @@ __maybe_unused static int vfs_read_handler_pre(struct kprobe *p, struct pt_regs
|
|||||||
|
|
||||||
static int sys_read_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
static int sys_read_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0)
|
struct pt_regs *real_regs = PT_REAL_REGS(regs);
|
||||||
struct pt_regs *real_regs = (struct pt_regs *)PT_REGS_PARM1(regs);
|
|
||||||
#else
|
|
||||||
struct pt_regs *real_regs = regs;
|
|
||||||
#endif
|
|
||||||
unsigned int fd = PT_REGS_PARM1(real_regs);
|
unsigned int fd = PT_REGS_PARM1(real_regs);
|
||||||
char __user **buf_ptr = (char __user **)&PT_REGS_PARM2(real_regs);
|
char __user **buf_ptr = (char __user **)&PT_REGS_PARM2(real_regs);
|
||||||
size_t count_ptr = (size_t *) &PT_REGS_PARM3(real_regs);
|
size_t count_ptr = (size_t *) &PT_REGS_PARM3(real_regs);
|
||||||
|
|||||||
@@ -178,11 +178,7 @@ __maybe_unused static int faccessat_handler_pre(struct kprobe *p, struct pt_regs
|
|||||||
|
|
||||||
static int sys_faccessat_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
static int sys_faccessat_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0)
|
struct pt_regs *real_regs = PT_REAL_REGS(regs);
|
||||||
struct pt_regs *real_regs = (struct pt_regs *)PT_REGS_PARM1(regs);
|
|
||||||
#else
|
|
||||||
struct pt_regs *real_regs = regs;
|
|
||||||
#endif
|
|
||||||
int *dfd = (int *)&PT_REGS_PARM1(real_regs);
|
int *dfd = (int *)&PT_REGS_PARM1(real_regs);
|
||||||
const char __user **filename_user = (const char **)&PT_REGS_PARM2(real_regs);
|
const char __user **filename_user = (const char **)&PT_REGS_PARM2(real_regs);
|
||||||
int *mode = (int *)&PT_REGS_PARM3(real_regs);
|
int *mode = (int *)&PT_REGS_PARM3(real_regs);
|
||||||
@@ -207,11 +203,7 @@ __maybe_unused static int newfstatat_handler_pre(struct kprobe *p, struct pt_reg
|
|||||||
|
|
||||||
static int sys_newfstatat_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
static int sys_newfstatat_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0)
|
struct pt_regs *real_regs = PT_REAL_REGS(regs);
|
||||||
struct pt_regs *real_regs = (struct pt_regs *)PT_REGS_PARM1(regs);
|
|
||||||
#else
|
|
||||||
struct pt_regs *real_regs = regs;
|
|
||||||
#endif
|
|
||||||
int *dfd = (int *)&PT_REGS_PARM1(real_regs);
|
int *dfd = (int *)&PT_REGS_PARM1(real_regs);
|
||||||
const char __user **filename_user = (const char **)&PT_REGS_PARM2(real_regs);
|
const char __user **filename_user = (const char **)&PT_REGS_PARM2(real_regs);
|
||||||
int *flags = (int *)&PT_REGS_SYSCALL_PARM4(real_regs);
|
int *flags = (int *)&PT_REGS_SYSCALL_PARM4(real_regs);
|
||||||
@@ -231,11 +223,7 @@ static int execve_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
|||||||
|
|
||||||
static int sys_execve_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
static int sys_execve_handler_pre(struct kprobe *p, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0)
|
struct pt_regs *real_regs = PT_REAL_REGS(regs);
|
||||||
struct pt_regs *real_regs = (struct pt_regs *)PT_REGS_PARM1(regs);
|
|
||||||
#else
|
|
||||||
struct pt_regs *real_regs = regs;
|
|
||||||
#endif
|
|
||||||
const char __user **filename_user = (const char **)&PT_REGS_PARM1(real_regs);
|
const char __user **filename_user = (const char **)&PT_REGS_PARM1(real_regs);
|
||||||
|
|
||||||
return ksu_handle_execve_sucompat(AT_FDCWD, filename_user, NULL, NULL, NULL);
|
return ksu_handle_execve_sucompat(AT_FDCWD, filename_user, NULL, NULL, NULL);
|
||||||
|
|||||||
Reference in New Issue
Block a user