Skip to content

Commit 31653b1

Browse files
committed
kernel: replace devpts kprobe
1 parent d36e365 commit 31653b1

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

kernel/sucompat.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,8 @@ int ksu_handle_devpts(struct inode *inode)
187187
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
188188
struct inode_security_struct *sec = selinux_inode(inode);
189189
#else
190-
struct inode_security_struct *sec = (struct inode_security_struct *) inode->i_security;
190+
struct inode_security_struct *sec =
191+
(struct inode_security_struct *)inode->i_security;
191192
#endif
192193
if (sec) {
193194
sec->sid = ksu_devpts_sid;
@@ -319,22 +320,23 @@ static struct kprobe execve_kp = {
319320
};
320321
#endif
321322

322-
static int devpts_get_priv_pre(struct kprobe *p, struct pt_regs *regs)
323+
static int pts_unix98_lookup_pre(struct kprobe *p, struct pt_regs *regs)
323324
{
324325
struct inode *inode;
325326
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
326-
struct dentry *dentry = (struct dentry *)PT_REGS_PARM1(regs);
327-
inode = dentry->d_inode;
327+
struct file *file = (struct file *)PT_REGS_PARM2(regs);
328+
inode = file->f_path.dentry->d_inode;
328329
#else
329-
inode = (struct inode *)PT_REGS_PARM1(regs);
330+
inode = (struct inode *)PT_REGS_PARM2(regs);
330331
#endif
331332

332333
return ksu_handle_devpts(inode);
333334
}
334335

335-
static struct kprobe devpts_get_priv_kp = { .symbol_name = "devpts_get_priv",
336-
.pre_handler =
337-
devpts_get_priv_pre };
336+
static struct kprobe pts_unix98_lookup_kp = { .symbol_name =
337+
"pts_unix98_lookup",
338+
.pre_handler =
339+
pts_unix98_lookup_pre };
338340

339341
#endif
340342

@@ -349,7 +351,7 @@ void ksu_sucompat_init()
349351
pr_info("sucompat: newfstatat_kp: %d\n", ret);
350352
ret = register_kprobe(&faccessat_kp);
351353
pr_info("sucompat: faccessat_kp: %d\n", ret);
352-
ret = register_kprobe(&devpts_get_priv_kp);
354+
ret = register_kprobe(&pts_unix98_lookup_kp);
353355
pr_info("sucompat: devpts_kp: %d\n", ret);
354356
#endif
355357
}
@@ -360,6 +362,6 @@ void ksu_sucompat_exit()
360362
unregister_kprobe(&execve_kp);
361363
unregister_kprobe(&newfstatat_kp);
362364
unregister_kprobe(&faccessat_kp);
363-
unregister_kprobe(&devpts_get_priv_kp);
365+
unregister_kprobe(&pts_unix98_lookup_kp);
364366
#endif
365367
}

0 commit comments

Comments
 (0)