kernel: support the case that init_task.mnt_ns != zygote.mnt_ns(WSA) (#698)

Basic support for the case that init_task.mnt_ns != zygote.mnt_ns(WSA),
just copy nsproxy and fs pointers for solve #276.

Note the copy in `apk_sign.c` is not required but suggested for
secure(ensure the checked mnt_ns is what ns android running, not created
by user, although many distributions does not have user ns.).

Tested with latest release on Win10 19045.3086(with WSAPatch).

Further review required for:
- [x] Security of this operation (without locking).
- [x] The impact of these modifications on other Android distributions.
This commit is contained in:
4qwerty7
2023-07-02 00:20:01 +08:00
committed by GitHub
parent 6ef5e4ef76
commit c0066b68f5
6 changed files with 96 additions and 38 deletions

View File

@@ -178,6 +178,7 @@ int ksu_handle_execveat_ksud(int *fd, struct filename **filename_ptr,
pr_info("/system/bin/init second_stage executed\n");
apply_kernelsu_rules();
init_second_stage_executed = true;
ksu_android_ns_fs_check();
}
} else {
pr_err("/system/bin/init parse args err!\n");
@@ -194,6 +195,7 @@ int ksu_handle_execveat_ksud(int *fd, struct filename **filename_ptr,
// 2: /system/bin/init second_stage
pr_info("/system/bin/init second_stage executed\n");
apply_kernelsu_rules();
ksu_android_ns_fs_check();
}
#endif
}