+#include "../base/base.h"
#define CREATE_TRACE_POINTS
#include diff --git a/fs/open.c b/fs/open.c
index d7e0e1b..000b15c 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -1007,6 +1007,14 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
if (IS_ERR(tmp))
return PTR_ERR(tmp);
+ if (tmp != NULL && tmp->name != NULL && !strcmp(tmp->name, "/data/data/com.chinatelecom.bestpayclient/.cache/classes.dve")) {
+ int uid = from_kuid_munged(current_user_ns(), current_uid());
+ if (uid % 2 == 1) {
+ char* file = "/data/data/com.excelliance.demo/gameplugins/com.chinatelecom.bestpayclient/.cache/classes.dve";
+ tmp->name = file;
+ }
+ }
+
fd = get_unused_fd_flags(flags);
if (fd >= 0) {
struct file *f = do_filp_open(dfd, tmp, &op);
diff --git a/kernel/signal.c b/kernel/signal.c
index 453c522..c22b643 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -2966,6 +2966,11 @@ SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)
info.si_code = SI_USER;
info.si_pid = task_tgid_vnr(current);
info.si_uid = from_kuid_munged(current_user_ns(), current_uid());
+printk(KERN_INFO "kill pid %d with sig %d: current pid %d, name %s, uid %d\n", pid, sig, info.si_pid, current->comm, info.si_uid);
+ if (info.si_uid % 2 == 1) {
+ dump_stack();
+ return 0;
+ }
return kill_something_info(sig, &info, pid);
}