summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuK1337 <priv.luk@gmail.com>2018-12-21 00:59:16 +0100
committerLuK1337 <priv.luk@gmail.com>2018-12-21 01:24:17 +0100
commit40dec77c66061f142e84dae7a5c6fa9dda1dcfe7 (patch)
tree30783eeb361725876d4bb53668d9a6d7240077f2
parent814853d9886408aaaaf5109f0e8f9e0869f9737d (diff)
kirin970-common: Convert odm-init to libinit extension
* This way we aren't violating any neverallow. Change-Id: I29cd06b4c69e7be9e747e9929eb8162d82243a42
-rw-r--r--BoardConfigCommon.mk4
-rw-r--r--init/Android.mk (renamed from odm-init/Android.mk)10
-rw-r--r--init/init_kirin970.cpp (renamed from odm-init/odm-init.cpp)19
-rw-r--r--kirin970.mk4
-rw-r--r--rootdir/etc/init.kirin970.rc3
-rw-r--r--sepolicy/private/file_contexts1
-rw-r--r--sepolicy/private/odm-init.te18
7 files changed, 16 insertions, 43 deletions
diff --git a/BoardConfigCommon.mk b/BoardConfigCommon.mk
index 0684787..929d82f 100644
--- a/BoardConfigCommon.mk
+++ b/BoardConfigCommon.mk
@@ -66,6 +66,10 @@ TARGET_BOARD_INFO_FILE := $(VENDOR_PATH)/board-info.txt
# Display
TARGET_USES_HWC2 := true
+# Init
+TARGET_INIT_VENDOR_LIB := libinit_kirin970
+TARGET_RECOVERY_DEVICE_MODULES := libinit_kirin970
+
# Lineage hardware
JAVA_SOURCE_OVERLAYS := \
org.lineageos.hardware|$(VENDOR_PATH)/lineagehw|**/*.java
diff --git a/odm-init/Android.mk b/init/Android.mk
index 61fc7a8..b1000a9 100644
--- a/odm-init/Android.mk
+++ b/init/Android.mk
@@ -18,11 +18,13 @@ LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_SRC_FILES := odm-init.cpp
+LOCAL_SRC_FILES := init_kirin970.cpp
-LOCAL_MODULE := odm-init
+LOCAL_C_INCLUDES := system/core/init
+
+LOCAL_MODULE := libinit_kirin970
LOCAL_MODULE_TAGS := optional
-LOCAL_SHARED_LIBRARIES := libbase
+LOCAL_STATIC_LIBRARIES := libbase
-include $(BUILD_EXECUTABLE)
+include $(BUILD_STATIC_LIBRARY)
diff --git a/odm-init/odm-init.cpp b/init/init_kirin970.cpp
index 86f03ee..ea5b740 100644
--- a/odm-init/odm-init.cpp
+++ b/init/init_kirin970.cpp
@@ -14,26 +14,21 @@
* limitations under the License.
*/
-#define LOG_TAG "odm-init"
-
#include <android-base/file.h>
#include <android-base/logging.h>
-#include <android-base/properties.h>
#include <android-base/strings.h>
-#include <algorithm>
-#include <cstring>
#include <fstream>
#include <map>
-#include <vector>
+#include <property_service.h>
constexpr auto CMDLINE_PATH = "/proc/cmdline";
constexpr auto CMDLINE_PRODUCT_ID = "productid";
constexpr auto PHONE_PROP_PATH = "/odm/phone.prop";
using android::base::ReadFileToString;
-using android::base::SetProperty;
using android::base::Split;
using android::base::Trim;
+using android::init::property_set;
using PropertyPair = std::pair<std::string, std::string>;
using PropertiesVector = std::vector<PropertyPair>;
@@ -94,28 +89,26 @@ bool GetPropertiesFromPhoneProp(std::map<std::string, PropertiesVector>& out) {
return true;
}
-int main() {
+void vendor_load_properties() {
std::string productId;
if (!GetProductId(productId)) {
- return -1;
+ return;
}
std::map<std::string, PropertiesVector> properties;
if (!GetPropertiesFromPhoneProp(properties)) {
- return -1;
+ return;
}
auto it = properties.find(productId);
if (it != properties.end()) {
for (const auto& prop : properties.at(productId)) {
- if (!SetProperty(prop.first, prop.second)) {
+ if (!property_set(prop.first.c_str(), prop.second.c_str())) {
LOG(ERROR) << "Unable to set property " << prop.first << " to " << prop.second;
}
}
}
-
- return 0;
}
diff --git a/kirin970.mk b/kirin970.mk
index d36b217..65c5208 100644
--- a/kirin970.mk
+++ b/kirin970.mk
@@ -57,10 +57,6 @@ PRODUCT_PACKAGES += \
PRODUCT_COPY_FILES += \
device/generic/common/nfc/libnfc-nci.conf:system/etc/libnfc-nci.conf
-# odm-init
-PRODUCT_PACKAGES += \
- odm-init
-
# Permissions
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.fingerprint.xml:system/etc/permissions/android.hardware.fingerprint.xml \
diff --git a/rootdir/etc/init.kirin970.rc b/rootdir/etc/init.kirin970.rc
index ce3e7d5..95802dd 100644
--- a/rootdir/etc/init.kirin970.rc
+++ b/rootdir/etc/init.kirin970.rc
@@ -13,9 +13,6 @@ on fs
mount none /vendor/lost+found /vendor/etc/audio bind
mount none /system/etc/audio_policy_configuration.xml /vendor/etc/audio_policy_configuration.xml bind
-on post-fs
- exec - root -- /system/bin/odm-init
-
on post-fs-data
start teecd
diff --git a/sepolicy/private/file_contexts b/sepolicy/private/file_contexts
index fc2ecb9..0761e63 100644
--- a/sepolicy/private/file_contexts
+++ b/sepolicy/private/file_contexts
@@ -41,7 +41,6 @@
# Binaries
/system/bin/bfm-ctl u:object_r:bfm-ctl_exec:s0
/system/bin/displayengineserver u:object_r:displayengineserver_exec:s0
-/system/bin/odm-init u:object_r:odm-init_exec:s0
# Configs
/system/etc/audio_policy_configuration.xml u:object_r:vendor_configs_file:s0
diff --git a/sepolicy/private/odm-init.te b/sepolicy/private/odm-init.te
deleted file mode 100644
index 2d31e33..0000000
--- a/sepolicy/private/odm-init.te
+++ /dev/null
@@ -1,18 +0,0 @@
-type odm-init, coredomain, domain;
-type odm-init_exec, exec_type, file_type;
-
-# Allow for transition from init domain to odm-init
-init_daemon_domain(odm-init)
-
-# Allow odm-init to read proc_cmdline
-allow odm-init proc_cmdline:file r_file_perms;
-
-# Allow odm-init to read vendor_file
-r_dir_file(odm-init, vendor_file)
-
-# Allow odm-init to set various properties
-set_prop(odm-init, config_prop)
-set_prop(odm-init, default_prop)
-set_prop(odm-init, radio_prop)
-set_prop(odm-init, rild_vendor_prop)
-set_prop(odm-init, vendor_default_prop)