From 567b947d85a353af56799c4e48583adfa7ff4e0d Mon Sep 17 00:00:00 2001
From: Tomasz Wasilczyk <twasilczyk@google.com>
Date: Mon, 7 Aug 2017 17:06:06 -0700
Subject: [PATCH] Move Broadcast Radio HAL to a separate binary.

Bug: 63600413
Test: VTS, instrumentation, audit2allow
Change-Id: I57c0150a52c13f1ce21f9ae2147e3814aad0fb7e
---
 private/compat/26.0/26.0.ignore.cil  | 1 +
 private/hwservice_contexts           | 2 +-
 private/system_server.te             | 1 +
 public/attributes                    | 6 ++++++
 public/hal_broadcastradio.te         | 4 ++++
 public/hwservice.te                  | 1 +
 vendor/file_contexts                 | 1 +
 vendor/hal_broadcastradio_default.te | 5 +++++
 8 files changed, 20 insertions(+), 1 deletion(-)
 create mode 100644 public/hal_broadcastradio.te
 create mode 100644 vendor/hal_broadcastradio_default.te

diff --git a/private/compat/26.0/26.0.ignore.cil b/private/compat/26.0/26.0.ignore.cil
index a04e02622..a517b9605 100644
--- a/private/compat/26.0/26.0.ignore.cil
+++ b/private/compat/26.0/26.0.ignore.cil
@@ -7,6 +7,7 @@
     broadcastradio_service
     e2fs
     e2fs_exec
+    hal_broadcastradio_hwservice
     hal_cas_hwservice
     hal_neuralnetworks_hwservice
     hal_tetheroffload_hwservice
diff --git a/private/hwservice_contexts b/private/hwservice_contexts
index 107e48392..e30449553 100644
--- a/private/hwservice_contexts
+++ b/private/hwservice_contexts
@@ -6,7 +6,7 @@ android.hardware.audio::IDevicesFactory                         u:object_r:hal_a
 android.hardware.biometrics.fingerprint::IBiometricsFingerprint u:object_r:hal_fingerprint_hwservice:s0
 android.hardware.bluetooth::IBluetoothHci                       u:object_r:hal_bluetooth_hwservice:s0
 android.hardware.boot::IBootControl                             u:object_r:hal_bootctl_hwservice:s0
-android.hardware.broadcastradio::IBroadcastRadioFactory         u:object_r:hal_audio_hwservice:s0
+android.hardware.broadcastradio::IBroadcastRadioFactory         u:object_r:hal_broadcastradio_hwservice:s0
 android.hardware.camera.provider::ICameraProvider               u:object_r:hal_camera_hwservice:s0
 android.hardware.configstore::ISurfaceFlingerConfigs            u:object_r:hal_configstore_ISurfaceFlingerConfigs:s0
 android.hardware.contexthub::IContexthub                        u:object_r:hal_contexthub_hwservice:s0
diff --git a/private/system_server.te b/private/system_server.te
index e61b30353..a46272ad6 100644
--- a/private/system_server.te
+++ b/private/system_server.te
@@ -186,6 +186,7 @@ binder_service(system_server)
 
 # Use HALs
 hal_client_domain(system_server, hal_allocator)
+hal_client_domain(system_server, hal_broadcastradio)
 hal_client_domain(system_server, hal_configstore)
 hal_client_domain(system_server, hal_contexthub)
 hal_client_domain(system_server, hal_fingerprint)
diff --git a/public/attributes b/public/attributes
index 386b21a56..d384efd8d 100644
--- a/public/attributes
+++ b/public/attributes
@@ -214,6 +214,12 @@ attribute hal_bootctl_client;
 expandattribute hal_bootctl_client true;
 attribute hal_bootctl_server;
 expandattribute hal_bootctl_server false;
+attribute hal_broadcastradio;
+expandattribute hal_broadcastradio true;
+attribute hal_broadcastradio_client;
+expandattribute hal_broadcastradio_client true;
+attribute hal_broadcastradio_server;
+expandattribute hal_broadcastradio_server false;
 attribute hal_camera;
 expandattribute hal_camera false;
 attribute hal_camera_client;
diff --git a/public/hal_broadcastradio.te b/public/hal_broadcastradio.te
new file mode 100644
index 000000000..24d4908e1
--- /dev/null
+++ b/public/hal_broadcastradio.te
@@ -0,0 +1,4 @@
+binder_call(hal_broadcastradio_client, hal_broadcastradio_server)
+
+add_hwservice(hal_broadcastradio_server, hal_broadcastradio_hwservice)
+allow hal_broadcastradio_client hal_broadcastradio_hwservice:hwservice_manager find;
diff --git a/public/hwservice.te b/public/hwservice.te
index 1b11678df..97b9b8d19 100644
--- a/public/hwservice.te
+++ b/public/hwservice.te
@@ -5,6 +5,7 @@ type fwk_sensor_hwservice, hwservice_manager_type, coredomain_hwservice;
 type hal_audio_hwservice, hwservice_manager_type;
 type hal_bluetooth_hwservice, hwservice_manager_type;
 type hal_bootctl_hwservice, hwservice_manager_type;
+type hal_broadcastradio_hwservice, hwservice_manager_type;
 type hal_camera_hwservice, hwservice_manager_type;
 type hal_configstore_ISurfaceFlingerConfigs, hwservice_manager_type;
 type hal_contexthub_hwservice, hwservice_manager_type;
diff --git a/vendor/file_contexts b/vendor/file_contexts
index 08cc068d2..522e4bfea 100644
--- a/vendor/file_contexts
+++ b/vendor/file_contexts
@@ -5,6 +5,7 @@
 /(vendor|system/vendor)/bin/hw/android\.hardware\.bluetooth@1\.0-service      u:object_r:hal_bluetooth_default_exec:s0
 /(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service u:object_r:hal_fingerprint_default_exec:s0
 /(vendor|system/vendor)/bin/hw/android\.hardware\.boot@1\.0-service           u:object_r:hal_bootctl_default_exec:s0
+/(vendor|system/vendor)/bin/hw/android\.hardware\.broadcastradio@1\.1-service u:object_r:hal_broadcastradio_default_exec:s0
 /(vendor|system/vendor)/bin/hw/android\.hardware\.camera\.provider@2\.4-service          u:object_r:hal_camera_default_exec:s0
 /(vendor|system/vendor)/bin/hw/android\.hardware\.configstore@1\.[0-9]+-service    u:object_r:hal_configstore_default_exec:s0
 /(vendor|system/vendor)/bin/hw/android\.hardware\.contexthub@1\.0-service     u:object_r:hal_contexthub_default_exec:s0
diff --git a/vendor/hal_broadcastradio_default.te b/vendor/hal_broadcastradio_default.te
new file mode 100644
index 000000000..37f65f4fe
--- /dev/null
+++ b/vendor/hal_broadcastradio_default.te
@@ -0,0 +1,5 @@
+type hal_broadcastradio_default, domain;
+hal_server_domain(hal_broadcastradio_default, hal_broadcastradio)
+
+type hal_broadcastradio_default_exec, exec_type, vendor_file_type, file_type;
+init_daemon_domain(hal_broadcastradio_default)
-- 
GitLab