android-12.0.0_r32 patches

This commit is contained in:
Ziyang Zhou
2023-10-05 22:27:22 +08:00
parent b3fa25049b
commit 03a0fccccd
18 changed files with 928 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
From fdb9b0c61a69db3e23b966b6bfb90b53f9129bd4 Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Mon, 26 Apr 2021 22:55:03 +0800
Subject: [PATCH] disable seccomp
---
libminijail.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/libminijail.c b/libminijail.c
index 0820dbb..866f3d6 100644
--- a/libminijail.c
+++ b/libminijail.c
@@ -2164,6 +2164,7 @@ static void set_seccomp_filter(const struct minijail *j)
/*
* Install the syscall filter.
*/
+#if 0 // HACKED
if (j->flags.seccomp_filter) {
if (j->flags.seccomp_filter_tsync ||
j->flags.seccomp_filter_allow_speculation) {
@@ -2185,6 +2186,7 @@ static void set_seccomp_filter(const struct minijail *j)
}
}
}
+#endif
}
static pid_t forward_pid = -1;
--
2.34.1

View File

@@ -0,0 +1,223 @@
From 8226d761ce66834c5a565f0e64b0b99fa64c14f4 Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Sun, 9 May 2021 23:44:12 +0800
Subject: [PATCH] ignore selinux
---
libselinux/include/selinux/selinux.h | 4 ++++
libselinux/src/android/android.c | 1 +
libselinux/src/android/android_platform.c | 5 +++++
libselinux/src/checkAccess.c | 1 +
libselinux/src/getenforce.c | 1 +
libselinux/src/getfilecon.c | 1 +
libselinux/src/getpeercon.c | 1 +
libselinux/src/init.c | 1 +
libselinux/src/label.c | 1 +
libselinux/src/lgetfilecon.c | 1 +
libselinux/src/lsetfilecon.c | 1 +
libselinux/src/procattr.c | 2 ++
libselinux/src/sestatus.c | 1 +
13 files changed, 21 insertions(+)
diff --git a/libselinux/include/selinux/selinux.h b/libselinux/include/selinux/selinux.h
index 7922d96b..c99ea2ad 100644
--- a/libselinux/include/selinux/selinux.h
+++ b/libselinux/include/selinux/selinux.h
@@ -4,6 +4,10 @@
#include <sys/types.h>
#include <stdarg.h>
+#define SE_HACK
+#define se_hack() if (1) return
+#define se_hack1(p) if (1) return p
+
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/libselinux/src/android/android.c b/libselinux/src/android/android.c
index 87877082..241e46b7 100644
--- a/libselinux/src/android/android.c
+++ b/libselinux/src/android/android.c
@@ -84,6 +84,7 @@ struct selabel_handle* selinux_android_service_open_context_handle(const struct
sehandle = selabel_open(SELABEL_CTX_ANDROID_SERVICE,
seopts_service, nopts);
+ se_hack1(sehandle);
if (!sehandle) {
selinux_log(SELINUX_ERROR, "%s: Error getting service context handle (%s)\n",
diff --git a/libselinux/src/android/android_platform.c b/libselinux/src/android/android_platform.c
index 2e52c153..2f2d4c6c 100644
--- a/libselinux/src/android/android_platform.c
+++ b/libselinux/src/android/android_platform.c
@@ -85,6 +85,7 @@ static struct selabel_handle* selinux_android_file_context(const struct selinux_
struct selabel_handle* selinux_android_file_context_handle(void)
{
+ se_hack1(NULL);
struct selinux_opt seopts_file[MAX_FILE_CONTEXT_SIZE];
int size = 0;
unsigned int i;
@@ -1013,6 +1014,7 @@ out:
int selinux_android_setcon(const char *con)
{
+ se_hack1(0);
int ret = setcon(con);
if (ret)
return ret;
@@ -1029,6 +1031,7 @@ int selinux_android_setcontext(uid_t uid,
const char *seinfo,
const char *pkgname)
{
+ se_hack1(0);
char *orig_ctx_str = NULL, *ctx_str;
context_t ctx = NULL;
int rc = -1;
@@ -1420,6 +1423,7 @@ static int selinux_android_restorecon_common(const char* pathname_orig,
uid_t uid,
unsigned int flags)
{
+ se_hack1(0);
bool nochange = (flags & SELINUX_ANDROID_RESTORECON_NOCHANGE) ? true : false;
bool verbose = (flags & SELINUX_ANDROID_RESTORECON_VERBOSE) ? true : false;
bool recurse = (flags & SELINUX_ANDROID_RESTORECON_RECURSE) ? true : false;
@@ -1667,6 +1671,7 @@ void selinux_android_set_sehandle(const struct selabel_handle *hndl)
int selinux_android_load_policy()
{
+ se_hack1(0);
int fd = -1;
fd = open(sepolicy_file, O_RDONLY | O_NOFOLLOW | O_CLOEXEC);
diff --git a/libselinux/src/checkAccess.c b/libselinux/src/checkAccess.c
index 7227ffe5..31a9e620 100644
--- a/libselinux/src/checkAccess.c
+++ b/libselinux/src/checkAccess.c
@@ -20,6 +20,7 @@ static void avc_init_once(void)
}
int selinux_check_access(const char *scon, const char *tcon, const char *class, const char *perm, void *aux) {
+ se_hack1(0);
int rc;
security_id_t scon_id;
security_id_t tcon_id;
diff --git a/libselinux/src/getenforce.c b/libselinux/src/getenforce.c
index d909dced..fb782b77 100644
--- a/libselinux/src/getenforce.c
+++ b/libselinux/src/getenforce.c
@@ -11,6 +11,7 @@
int security_getenforce(void)
{
+ se_hack1(0);
int fd, ret, enforce = 0;
char path[PATH_MAX];
char buf[20];
diff --git a/libselinux/src/getfilecon.c b/libselinux/src/getfilecon.c
index 20bee8ab..ebbae3c6 100644
--- a/libselinux/src/getfilecon.c
+++ b/libselinux/src/getfilecon.c
@@ -53,6 +53,7 @@ hidden_def(getfilecon_raw)
int getfilecon(const char *path, char ** context)
{
+ se_hack1((*context = calloc(7, 1), memcpy(*context, "HACKED", 6), 0));
int ret;
char * rcontext = NULL;
diff --git a/libselinux/src/getpeercon.c b/libselinux/src/getpeercon.c
index 3a77a2de..f8dab8e5 100644
--- a/libselinux/src/getpeercon.c
+++ b/libselinux/src/getpeercon.c
@@ -47,6 +47,7 @@ hidden_def(getpeercon_raw)
int getpeercon(int fd, char ** context)
{
+ se_hack1((*context = calloc(7, 1), memcpy(*context, "HACKED", 6), 0));
int ret;
char * rcontext;
diff --git a/libselinux/src/init.c b/libselinux/src/init.c
index 083638c4..476c1278 100644
--- a/libselinux/src/init.c
+++ b/libselinux/src/init.c
@@ -142,6 +142,7 @@ hidden_def(fini_selinuxmnt)
void set_selinuxmnt(const char *mnt)
{
+ se_hack();
selinux_mnt = strdup(mnt);
}
diff --git a/libselinux/src/label.c b/libselinux/src/label.c
index e0ed68d5..2c22c04f 100644
--- a/libselinux/src/label.c
+++ b/libselinux/src/label.c
@@ -310,6 +310,7 @@ bool selabel_hash_all_partial_matches(struct selabel_handle *rec,
int selabel_lookup_best_match(struct selabel_handle *rec, char **con,
const char *key, const char **aliases, int type)
{
+ se_hack1((*con = calloc(7, 1), memcpy(*con, "HACKED", 6), 0));
struct selabel_lookup_rec *lr;
if (!rec->func_lookup_best_match) {
diff --git a/libselinux/src/lgetfilecon.c b/libselinux/src/lgetfilecon.c
index db67bc60..7123480f 100644
--- a/libselinux/src/lgetfilecon.c
+++ b/libselinux/src/lgetfilecon.c
@@ -53,6 +53,7 @@ hidden_def(lgetfilecon_raw)
int lgetfilecon(const char *path, char ** context)
{
+ se_hack1((*context = calloc(7, 1), memcpy(*context, "HACKED", 6), 0));
int ret;
char * rcontext = NULL;
diff --git a/libselinux/src/lsetfilecon.c b/libselinux/src/lsetfilecon.c
index 1d3b28a1..7062703f 100644
--- a/libselinux/src/lsetfilecon.c
+++ b/libselinux/src/lsetfilecon.c
@@ -29,6 +29,7 @@ hidden_def(lsetfilecon_raw)
int lsetfilecon(const char *path, const char *context)
{
+ se_hack1(0);
int ret;
char * rcontext;
diff --git a/libselinux/src/procattr.c b/libselinux/src/procattr.c
index c6799ef2..1f7d9c31 100644
--- a/libselinux/src/procattr.c
+++ b/libselinux/src/procattr.c
@@ -195,6 +195,7 @@ static int getprocattrcon_raw(char ** context,
static int getprocattrcon(char ** context,
pid_t pid, const char *attr)
{
+ se_hack1((*context = calloc(7, 1), memcpy(*context, "HACKED", 6), 0));
int ret;
char * rcontext;
@@ -280,6 +281,7 @@ out:
static int setprocattrcon(const char * context,
pid_t pid, const char *attr)
{
+ se_hack1(0);
int ret;
char * rcontext;
diff --git a/libselinux/src/sestatus.c b/libselinux/src/sestatus.c
index ede5a289..a2f092e9 100644
--- a/libselinux/src/sestatus.c
+++ b/libselinux/src/sestatus.c
@@ -254,6 +254,7 @@ static int fallback_cb_policyload(int policyload)
*/
int selinux_status_open(int fallback)
{
+ se_hack1(0);
int fd;
char path[PATH_MAX];
long pagesize;
--
2.34.1

View File

@@ -0,0 +1,48 @@
From d7c7d10b4f754ec4063cb619a8a7485174ada4ce Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Mon, 20 Sep 2021 18:22:20 +0000
Subject: [PATCH] video playback workaround
---
media/libstagefright/colorconversion/SoftwareRenderer.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/media/libstagefright/colorconversion/SoftwareRenderer.cpp b/media/libstagefright/colorconversion/SoftwareRenderer.cpp
index 4711315615..af596e8168 100644
--- a/media/libstagefright/colorconversion/SoftwareRenderer.cpp
+++ b/media/libstagefright/colorconversion/SoftwareRenderer.cpp
@@ -130,6 +130,7 @@ void SoftwareRenderer::resetFormatIfChanged(
// hardware has YUV12 and RGBA8888 support, so convert known formats
{
switch (mColorFormat) {
+#if 0 // HACKED
case OMX_COLOR_FormatYUV420Planar:
case OMX_COLOR_FormatYUV420SemiPlanar:
case OMX_TI_COLOR_FormatYUV420PackedSemiPlanar:
@@ -139,6 +140,7 @@ void SoftwareRenderer::resetFormatIfChanged(
bufHeight = (mCropHeight + 1) & ~1;
break;
}
+#endif
case OMX_COLOR_Format24bitRGB888:
{
halFormat = HAL_PIXEL_FORMAT_RGB_888;
@@ -154,6 +156,7 @@ void SoftwareRenderer::resetFormatIfChanged(
bufHeight = (mCropHeight + 1) & ~1;
break;
}
+#if 0 // HACKED
case OMX_COLOR_FormatYUV420Planar16:
{
if (((dataSpace & HAL_DATASPACE_STANDARD_MASK) == HAL_DATASPACE_STANDARD_BT2020)
@@ -170,6 +173,7 @@ void SoftwareRenderer::resetFormatIfChanged(
bufHeight = (mCropHeight + 1) & ~1;
break;
}
+#endif
default:
{
break;
--
2.34.1

View File

@@ -0,0 +1,58 @@
From 78a265c62f866a3d83701ad337158fd615e4e5f1 Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Sun, 9 May 2021 23:04:00 +0800
Subject: [PATCH 1/2] fix booting
---
libs/binder/Binder.cpp | 1 +
libs/binder/IPCThreadState.cpp | 2 +-
libs/binder/ProcessState.cpp | 3 +++
3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/libs/binder/Binder.cpp b/libs/binder/Binder.cpp
index d5bdd1c803..94b8da8e1c 100644
--- a/libs/binder/Binder.cpp
+++ b/libs/binder/Binder.cpp
@@ -276,6 +276,7 @@ bool BBinder::isRequestingSid()
void BBinder::setRequestingSid(bool requestingSid)
{
+ requestingSid = false; // HACKED
Extras* e = mExtras.load(std::memory_order_acquire);
if (!e) {
diff --git a/libs/binder/IPCThreadState.cpp b/libs/binder/IPCThreadState.cpp
index c415ea02e2..3e71a9c8e6 100644
--- a/libs/binder/IPCThreadState.cpp
+++ b/libs/binder/IPCThreadState.cpp
@@ -1242,7 +1242,7 @@ status_t IPCThreadState::executeCommand(int32_t cmd)
clearPropagateWorkSource();
mCallingPid = tr.sender_pid;
- mCallingSid = reinterpret_cast<const char*>(tr_secctx.secctx);
+ mCallingSid = "HACKED";
mCallingUid = tr.sender_euid;
mLastTransactionBinderFlags = tr.flags;
diff --git a/libs/binder/ProcessState.cpp b/libs/binder/ProcessState.cpp
index bade9187ac..8e8fec5040 100644
--- a/libs/binder/ProcessState.cpp
+++ b/libs/binder/ProcessState.cpp
@@ -149,11 +149,14 @@ bool ProcessState::becomeContextManager()
{
AutoMutex _l(mLock);
+#if 0 // HACKED
flat_binder_object obj {
.flags = FLAT_BINDER_FLAG_TXN_SECURITY_CTX,
};
int result = ioctl(mDriverFD, BINDER_SET_CONTEXT_MGR_EXT, &obj);
+#endif
+ status_t result = 1;
// fallback to original method
if (result != 0) {
--
2.34.1

View File

@@ -0,0 +1,70 @@
From 335caa486b9faa8e89a1b81e442726fa839d4776 Mon Sep 17 00:00:00 2001
From: Chris Forbes <chrisforbes@google.com>
Date: Thu, 22 Jul 2021 13:54:04 -0700
Subject: [PATCH 2/2] Inline GetPhysicalDeviceProperties2 into
QueryPresentationProperties
In general, we implement the 1.1 instance / physical device API as
preferring to call the native 1.1 function if available; otherwise
falling back to calling the equivalent GPDP2 function. If the
underlying driver supports *neither* then any caller of that function
has already invoked UB by calling it and so falling over is acceptable.
Unfortunately, the loader itself does call vkGetPhysicalDeviceProperties2
in one case, regardless of what the driver may support, in order to
determine whether the platform's swapchain implementation should expose
some features. On a 1.0 driver without the GPDP2 extension, this caused
trouble.
As a slight further wrinkle, vkGetPhysicalDeviceProperties2 "cannot
fail", making propagating a failure back up through the loader annoying.
As a workaround, inline the calls to GetPhysicalDeviceProperties2 and
GetPhysicalDeviceProperties2KHR into QueryPresentationProperties, where
we can handle our one special case of both function pointers being
missing but behavior being defined.
Bug: b/192130684
Bug: 208682099
Test: TH
Change-Id: Iff2bae98b7931bed80fafd895cf57061becabd8d
Merged-In: Iff2bae98b7931bed80fafd895cf57061becabd8d
---
vulkan/libvulkan/driver.cpp | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/vulkan/libvulkan/driver.cpp b/vulkan/libvulkan/driver.cpp
index d7fdab5586..cf774fd9b8 100644
--- a/vulkan/libvulkan/driver.cpp
+++ b/vulkan/libvulkan/driver.cpp
@@ -979,6 +979,8 @@ VkResult EnumerateInstanceExtensionProperties(
void QueryPresentationProperties(
VkPhysicalDevice physicalDevice,
VkPhysicalDevicePresentationPropertiesANDROID* presentation_properties) {
+ ATRACE_CALL();
+
// Request the android-specific presentation properties via GPDP2
VkPhysicalDeviceProperties2 properties = {
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
@@ -994,7 +996,17 @@ void QueryPresentationProperties(
presentation_properties->pNext = nullptr;
presentation_properties->sharedImage = VK_FALSE;
- GetPhysicalDeviceProperties2(physicalDevice, &properties);
+ const auto& driver = GetData(physicalDevice).driver;
+
+ if (driver.GetPhysicalDeviceProperties2) {
+ // >= 1.1 driver, supports core GPDP2 entrypoint.
+ driver.GetPhysicalDeviceProperties2(physicalDevice, &properties);
+ } else if (driver.GetPhysicalDeviceProperties2KHR) {
+ // Old driver, but may support presentation properties
+ // if we have the GPDP2 extension. Otherwise, no presentation
+ // properties supported.
+ driver.GetPhysicalDeviceProperties2KHR(physicalDevice, &properties);
+ }
}
VkResult EnumerateDeviceExtensionProperties(
--
2.34.1

View File

@@ -0,0 +1,27 @@
From 78c4b1ca9a702262ceff38a9976c17148b2aa084 Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Sat, 26 Jun 2021 05:22:01 +0800
Subject: [PATCH] fix booting
---
bpfloader/BpfLoader.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/bpfloader/BpfLoader.cpp b/bpfloader/BpfLoader.cpp
index 7a68894..072f153 100644
--- a/bpfloader/BpfLoader.cpp
+++ b/bpfloader/BpfLoader.cpp
@@ -121,8 +121,10 @@ int main() {
ALOGE("If this triggers randomly, you might be hitting some memory allocation "
"problems or startup script race.");
ALOGE("--- DO NOT EXPECT SYSTEM TO BOOT SUCCESSFULLY ---");
+#if 0 // HACKED
sleep(20);
return 2;
+#endif
}
}
--
2.34.1

View File

@@ -0,0 +1,135 @@
From 5f2ace364ccf3b8f444673b6b6d02c8fb0faab82 Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Sun, 9 May 2021 23:09:00 +0800
Subject: [PATCH 1/8] fix booting
---
init/first_stage_init.cpp | 20 ++++++++++++++++----
init/init.cpp | 0
init/property_service.cpp | 0
init/service.cpp | 3 ++-
init/util.cpp | 3 ++-
rootdir/init.rc | 1 -
6 files changed, 20 insertions(+), 7 deletions(-)
mode change 100644 => 100755 init/init.cpp
mode change 100644 => 100755 init/property_service.cpp
diff --git a/init/first_stage_init.cpp b/init/first_stage_init.cpp
index 78e5b60a1..8f2d7f585 100644
--- a/init/first_stage_init.cpp
+++ b/init/first_stage_init.cpp
@@ -34,6 +34,7 @@
#include <android-base/chrono_utils.h>
#include <android-base/file.h>
#include <android-base/logging.h>
+#include <android-base/strings.h>
#include <modprobe/modprobe.h>
#include <private/android_filesystem_config.h>
@@ -202,6 +203,8 @@ int FirstStageMain(int argc, char** argv) {
CHECKCALL(mkdir("/dev/pts", 0755));
CHECKCALL(mkdir("/dev/socket", 0755));
CHECKCALL(mkdir("/dev/dm-user", 0755));
+ mount("/system/etc", "/etc", "none", MS_BIND, NULL); // cgroup fix
+ unshare(CLONE_NEWCGROUP);
CHECKCALL(mount("devpts", "/dev/pts", "devpts", 0, NULL));
#define MAKE_STR(x) __STRING(x)
CHECKCALL(mount("proc", "/proc", "proc", 0, "hidepid=2,gid=" MAKE_STR(AID_READPROC)));
@@ -265,7 +268,6 @@ int FirstStageMain(int argc, char** argv) {
for (const auto& [error_string, error_errno] : errors) {
LOG(ERROR) << error_string << " " << strerror(error_errno);
}
- LOG(FATAL) << "Init encountered errors starting first stage, aborting";
}
LOG(INFO) << "init first stage started!";
@@ -351,7 +353,7 @@ int FirstStageMain(int argc, char** argv) {
}
if (!DoFirstStageMount(!created_devices)) {
- LOG(FATAL) << "Failed to mount required partitions early ...";
+ LOG(ERROR) << "Failed to mount required partitions early ..."; // HACKED
}
struct stat new_root_info;
@@ -370,12 +372,22 @@ int FirstStageMain(int argc, char** argv) {
1);
const char* path = "/system/bin/init";
- const char* args[] = {path, "selinux_setup", nullptr};
+ std::vector<const char *> args = {path, "second_stage"};
+ std::string init_cmdline;
+ android::base::ReadFileToString("/proc/self/cmdline", &init_cmdline);
+ std::replace(init_cmdline.begin(), init_cmdline.end(), '\0', ' ');
+ auto cmd_vector = android::base::Split(android::base::Trim(init_cmdline), " ");
+ int i = 0;
+ for (const auto& entry : cmd_vector) {
+ if (i++ == 0) continue; // ignore first arg '/init'
+ args.push_back(entry.c_str());
+ }
+ args.push_back(nullptr);
auto fd = open("/dev/kmsg", O_WRONLY | O_CLOEXEC);
dup2(fd, STDOUT_FILENO);
dup2(fd, STDERR_FILENO);
close(fd);
- execv(path, const_cast<char**>(args));
+ execv(path, const_cast<char**>(args.data()));
// execv() only returns if an error happened, in which case we
// panic and never fall through this conditional.
diff --git a/init/init.cpp b/init/init.cpp
old mode 100644
new mode 100755
diff --git a/init/property_service.cpp b/init/property_service.cpp
old mode 100644
new mode 100755
diff --git a/init/service.cpp b/init/service.cpp
index c3069f5b2..3e1970559 100644
--- a/init/service.cpp
+++ b/init/service.cpp
@@ -65,6 +65,7 @@ namespace android {
namespace init {
static Result<std::string> ComputeContextFromExecutable(const std::string& service_path) {
+ se_hack1("HACKED");
std::string computed_context;
char* raw_con = nullptr;
@@ -323,7 +324,7 @@ void Service::Reap(const siginfo_t& siginfo) {
if (!GetBoolProperty("init.svc_debug.no_fatal." + name_, false)) {
// Aborts into `fatal_reboot_target_'.
SetFatalRebootTarget(fatal_reboot_target_);
- LOG(FATAL) << "critical process '" << name_ << "' exited 4 times "
+ LOG(ERROR) << "critical process '" << name_ << "' exited 4 times "
<< exit_reason;
}
} else {
diff --git a/init/util.cpp b/init/util.cpp
index 9f7bfdb5b..db8137213 100644
--- a/init/util.cpp
+++ b/init/util.cpp
@@ -236,7 +236,8 @@ int wait_for_file(const char* filename, std::chrono::nanoseconds timeout) {
void ImportKernelCmdline(const std::function<void(const std::string&, const std::string&)>& fn) {
std::string cmdline;
- android::base::ReadFileToString("/proc/cmdline", &cmdline);
+ android::base::ReadFileToString("/proc/self/cmdline", &cmdline); // HACKED
+ std::replace(cmdline.begin(), cmdline.end(), '\0', ' '); // HACKED
for (const auto& entry : android::base::Split(android::base::Trim(cmdline), " ")) {
std::vector<std::string> pieces = android::base::Split(entry, "=");
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 451595092..6b8ca331f 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -510,7 +510,6 @@ on post-fs
# Once everything is setup, no need to modify /.
# The bind+remount combination allows this to work in containers.
- mount rootfs rootfs / remount bind ro nodev
# Mount default storage into root namespace
mount none /mnt/user/0 /storage bind rec
--
2.34.1

View File

@@ -0,0 +1,25 @@
From ead3ec67476dd875d8ae01e19f58b23db41793f3 Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Sat, 26 Jun 2021 13:42:24 +0800
Subject: [PATCH 2/8] allow override ro.* prop
---
init/property_service.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/init/property_service.cpp b/init/property_service.cpp
index 2d67bf5d7..55e89c647 100755
--- a/init/property_service.cpp
+++ b/init/property_service.cpp
@@ -1234,6 +1234,8 @@ static void ProcessKernelCmdline() {
ImportKernelCmdline([&](const std::string& key, const std::string& value) {
if (StartsWith(key, ANDROIDBOOT_PREFIX)) {
InitPropertySet("ro.boot." + key.substr(ANDROIDBOOT_PREFIX.size()), value);
+ } else if (StartsWith(key, "ro.")) {
+ InitPropertySet(key, value);
}
});
}
--
2.34.1

View File

@@ -0,0 +1,26 @@
From ed472e176c749f62af41242a5ec2374de62dc9b4 Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Fri, 25 Jun 2021 15:56:47 +0000
Subject: [PATCH 3/8] ignore input subsystem
---
rootdir/ueventd.rc | 3 ---
1 file changed, 3 deletions(-)
diff --git a/rootdir/ueventd.rc b/rootdir/ueventd.rc
index 56e774bdc..c881190e2 100644
--- a/rootdir/ueventd.rc
+++ b/rootdir/ueventd.rc
@@ -12,9 +12,6 @@ subsystem drm
devname uevent_devpath
dirname /dev/dri
-subsystem input
- devname uevent_devpath
- dirname /dev/input
subsystem sound
devname uevent_devpath
--
2.34.1

View File

@@ -0,0 +1,24 @@
From 7ff41d4e071c2c900ee5fa4c6abd68dbec12c795 Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Fri, 17 Dec 2021 22:44:33 +0800
Subject: [PATCH 4/8] ignore devfs mount
---
init/first_stage_init.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/init/first_stage_init.cpp b/init/first_stage_init.cpp
index 8f2d7f585..cbc48c733 100644
--- a/init/first_stage_init.cpp
+++ b/init/first_stage_init.cpp
@@ -199,7 +199,6 @@ int FirstStageMain(int argc, char** argv) {
CHECKCALL(setenv("PATH", _PATH_DEFPATH, 1));
// Get the basic filesystem setup we need put together in the initramdisk
// on / and then we'll let the rc file figure out the rest.
- CHECKCALL(mount("tmpfs", "/dev", "tmpfs", MS_NOSUID, "mode=0755"));
CHECKCALL(mkdir("/dev/pts", 0755));
CHECKCALL(mkdir("/dev/socket", 0755));
CHECKCALL(mkdir("/dev/dm-user", 0755));
--
2.34.1

View File

@@ -0,0 +1,24 @@
From cd7d73659e6054110ac77733686af37035afb74c Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Thu, 6 Jan 2022 20:47:28 +0800
Subject: [PATCH 5/8] auto alloc binder devices
---
rootdir/init.rc | 1 +
1 file changed, 1 insertion(+)
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 6b8ca331f..e8922c626 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -231,6 +231,7 @@ on init
mkdir /dev/binderfs
mount binder binder /dev/binderfs stats=global
chmod 0755 /dev/binderfs
+ exec -- /vendor/bin/binder_alloc /dev/binderfs/binder-control binder hwbinder vndbinder
# Mount fusectl
mount fusectl none /sys/fs/fuse/connections
--
2.34.1

View File

@@ -0,0 +1,24 @@
From b828e823e9c6ecb2f08ae3983ffa5071456d87ef Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Wed, 4 May 2022 22:19:51 +0800
Subject: [PATCH 6/8] ignore powerctl message
---
init/init.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/init/init.cpp b/init/init.cpp
index 942feb939..b82c589c2 100755
--- a/init/init.cpp
+++ b/init/init.cpp
@@ -908,7 +908,6 @@ int SecondStageMain(int argc, char** argv) {
if (shutdown_command) {
LOG(INFO) << "Got shutdown_command '" << *shutdown_command
<< "' Calling HandlePowerctlMessage()";
- HandlePowerctlMessage(*shutdown_command);
shutdown_state.set_do_shutdown(false);
}
--
2.34.1

View File

@@ -0,0 +1,28 @@
From b142c7c0ce2d63422932b7d9bf912c7240f8a025 Mon Sep 17 00:00:00 2001
From: John Tung <watchnight@163.com>
Date: Sun, 21 Aug 2022 11:23:33 +0800
Subject: [PATCH 7/8] fix cpu cgroup mount
---
libprocessgroup/setup/cgroup_map_write.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/libprocessgroup/setup/cgroup_map_write.cpp b/libprocessgroup/setup/cgroup_map_write.cpp
index 3121d244b..bb15e4f6d 100644
--- a/libprocessgroup/setup/cgroup_map_write.cpp
+++ b/libprocessgroup/setup/cgroup_map_write.cpp
@@ -309,6 +309,11 @@ static bool SetupCgroup(const CgroupDescriptor& descriptor) {
result = mount("none", controller->path(), "cgroup", MS_NODEV | MS_NOEXEC | MS_NOSUID,
controller->name());
}
+ if (result < 0 && (!strcmp(controller->name(), "cpu")
+ || !strcmp(controller->name(), "cpuacct"))) {
+ result = mount("none", controller->path(), "cgroup", MS_NODEV | MS_NOEXEC | MS_NOSUID,
+ "cpu,cpuacct");
+ }
}
if (result < 0) {
--
2.34.1

View File

@@ -0,0 +1,24 @@
From 58184b6db377b6d0550098055482d971d0c594ca Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Sat, 2 Sep 2023 17:10:16 +0800
Subject: [PATCH 8/8] skip fusectl mount
---
rootdir/init.rc | 1 -
1 file changed, 1 deletion(-)
diff --git a/rootdir/init.rc b/rootdir/init.rc
index e8922c626..981ab45e3 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -234,7 +234,6 @@ on init
exec -- /vendor/bin/binder_alloc /dev/binderfs/binder-control binder hwbinder vndbinder
# Mount fusectl
- mount fusectl none /sys/fs/fuse/connections
symlink /dev/binderfs/binder /dev/binder
symlink /dev/binderfs/hwbinder /dev/hwbinder
--
2.34.1

View File

@@ -0,0 +1,45 @@
From a09e0e00fa9e7733f8d2b78f17d982cf3a91439d Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Sun, 9 May 2021 23:44:12 +0800
Subject: [PATCH] fix booting
---
Binder.cpp | 1 +
ProcessState.cpp | 3 +++
2 files changed, 4 insertions(+)
diff --git a/Binder.cpp b/Binder.cpp
index b90639f1..4070de0d 100644
--- a/Binder.cpp
+++ b/Binder.cpp
@@ -96,6 +96,7 @@ bool BHwBinder::isRequestingSid() {
}
void BHwBinder::setRequestingSid(bool requestingSid) {
+ requestingSid = false; // HACKED
Extras* e = mExtras.load(std::memory_order_acquire);
if (!e) {
diff --git a/ProcessState.cpp b/ProcessState.cpp
index dbd6c87c..8f83cbac 100644
--- a/ProcessState.cpp
+++ b/ProcessState.cpp
@@ -121,12 +121,15 @@ void ProcessState::becomeContextManager()
{
AutoMutex _l(mLock);
+#if 0 // HACKED (?)
flat_binder_object obj {
.flags = FLAT_BINDER_FLAG_TXN_SECURITY_CTX,
};
status_t result = ioctl(mDriverFD, BINDER_SET_CONTEXT_MGR_EXT, &obj);
+#endif
+ status_t result = 1;
// fallback to original method
if (result != 0) {
android_errorWriteLog(0x534e4554, "121035042");
--
2.34.1

View File

@@ -0,0 +1,24 @@
From b0eae7befe84a0767d9d22d53db4575b669c8025 Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Sat, 15 Oct 2022 09:12:31 +0800
Subject: [PATCH] ignore compatibility check
---
VintfObject.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/VintfObject.cpp b/VintfObject.cpp
index 0a2b49c..980cfde 100644
--- a/VintfObject.cpp
+++ b/VintfObject.cpp
@@ -633,7 +633,6 @@ int32_t VintfObject::checkCompatibility(std::string* error, CheckFlags::Type fla
error->insert(0,
"Runtime info and framework compatibility matrix are incompatible: ");
}
- return INCOMPATIBLE;
}
}
--
2.34.1

View File

@@ -0,0 +1,67 @@
From ccb742f6ec38b4f0730f6686cadf9bb5560b68c3 Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Sat, 31 Jul 2021 06:14:33 +0000
Subject: [PATCH] fix booting?
---
server/Controllers.cpp | 2 ++
server/IptablesRestoreController.cpp | 1 +
server/TrafficController.cpp | 4 ++--
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/server/Controllers.cpp b/server/Controllers.cpp
index 1f2bac22..18ada8c0 100644
--- a/server/Controllers.cpp
+++ b/server/Controllers.cpp
@@ -285,12 +285,14 @@ void Controllers::init() {
netdutils::Status tcStatus = trafficCtrl.start();
if (!isOk(tcStatus)) {
gLog.error("Failed to start trafficcontroller: (%s)", toString(tcStatus).c_str());
+#if 0 // HACKED
gLog.error("CRITICAL: sleeping 60 seconds, netd exiting with failure, crash loop likely!");
// The expected reason we get here is a major kernel or other code bug, as such
// the probability that things will succeed on restart of netd is pretty small.
// So, let's wait a minute to at least try to limit the log spam a little bit.
sleep(60);
exit(1);
+#endif
}
gLog.info("Initializing traffic control: %" PRId64 "us", s.getTimeAndResetUs());
diff --git a/server/IptablesRestoreController.cpp b/server/IptablesRestoreController.cpp
index 10cedfa3..8b0170e4 100644
--- a/server/IptablesRestoreController.cpp
+++ b/server/IptablesRestoreController.cpp
@@ -362,6 +362,7 @@ int IptablesRestoreController::execute(const IptablesTarget target, const std::s
if (target == V6 || target == V4V6) {
res |= sendCommand(IP6TABLES_PROCESS, command, output);
}
+ res = 0; // HACKED
return res;
}
diff --git a/server/TrafficController.cpp b/server/TrafficController.cpp
index 1f678cbf..cc23e213 100644
--- a/server/TrafficController.cpp
+++ b/server/TrafficController.cpp
@@ -716,7 +716,7 @@ Status TrafficController::swapActiveStatsMap() {
if (!oldConfiguration.ok()) {
ALOGE("Cannot read the old configuration from map: %s",
oldConfiguration.error().message().c_str());
- return Status(oldConfiguration.error().code(), oldConfiguration.error().message());
+ return netdutils::status::ok; // HACKED
}
// Write to the configuration map to inform the kernel eBPF program to switch
@@ -741,7 +741,7 @@ Status TrafficController::swapActiveStatsMap() {
int ret = synchronizeKernelRCU();
if (ret) {
ALOGE("map swap synchronize_rcu() ended with failure: %s", strerror(-ret));
- return statusFromErrno(-ret, "map swap synchronize_rcu() failed");
+ //return statusFromErrno(-ret, "map swap synchronize_rcu() failed"); // HACKED
}
return netdutils::status::ok;
}
--
2.34.1

View File

@@ -0,0 +1,24 @@
From 0fe3c9fce155fd9efe5c590c8fac25c93f9bb716 Mon Sep 17 00:00:00 2001
From: Ziyang Zhou <ziyang.zhou@outlook.com>
Date: Sat, 6 Aug 2022 10:19:11 +0800
Subject: [PATCH] ignore project quota error
---
Utils.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/Utils.cpp b/Utils.cpp
index 4635975a..818a8948 100644
--- a/Utils.cpp
+++ b/Utils.cpp
@@ -243,6 +243,7 @@ int SetQuotaProjectId(const std::string& path, long projectId) {
ret = ioctl(fd, FS_IOC_FSSETXATTR, &fsx);
if (ret == -1) {
PLOG(ERROR) << "Failed to set project id on " << path;
+ ret = 0; // HACKED
return ret;
}
return 0;
--
2.34.1