diff --git a/public/hal_audio.te b/public/hal_audio.te
index d97910389ac68fd8a47568e102e98abaaa2436d0..d6f1f0c52b20a9e45f3ad19a27c1e22eb26eb5db 100644
--- a/public/hal_audio.te
+++ b/public/hal_audio.te
@@ -2,7 +2,6 @@
 binder_call(hal_audio_client, hal_audio_server)
 binder_call(hal_audio_server, hal_audio_client)
 
-add_hwservice(hal_audio_server, hal_audio_hwservice)
 hal_attribute_hwservice_client(hal_audio, hal_audio_hwservice)
 
 allow hal_audio ion_device:chr_file r_file_perms;
diff --git a/public/hal_audiocontrol.te b/public/hal_audiocontrol.te
index dc4aaa0cc66b8d3e78a8b1251e8d780a9c75b779..04a4b72ab72ab47821aea84761d136478499d27b 100644
--- a/public/hal_audiocontrol.te
+++ b/public/hal_audiocontrol.te
@@ -2,5 +2,4 @@
 binder_call(hal_audiocontrol_client, hal_audiocontrol_server)
 binder_call(hal_audiocontrol_server, hal_audiocontrol_client)
 
-add_hwservice(hal_audiocontrol_server, hal_audiocontrol_hwservice)
 hal_attribute_hwservice_client(hal_audiocontrol, hal_audiocontrol_hwservice)
diff --git a/public/hal_authsecret.te b/public/hal_authsecret.te
index f58b8aac94eed0ac1b9b36cb460215d2e7620634..7bd515e8b7f45ff03cf2bcb7196f429dfa2384d1 100644
--- a/public/hal_authsecret.te
+++ b/public/hal_authsecret.te
@@ -1,5 +1,4 @@
 # HwBinder IPC from client to server
 binder_call(hal_authsecret_client, hal_authsecret_server)
 
-add_hwservice(hal_authsecret_server, hal_authsecret_hwservice)
 hal_attribute_hwservice_client(hal_authsecret, hal_authsecret_hwservice)
diff --git a/public/hal_bluetooth.te b/public/hal_bluetooth.te
index b0c68bf721254414dd05e4d5d5747bff3730c349..b6ae4599c663dd6bb13017ea6e1c8b25f1975d87 100644
--- a/public/hal_bluetooth.te
+++ b/public/hal_bluetooth.te
@@ -2,7 +2,6 @@
 binder_call(hal_bluetooth_client, hal_bluetooth_server)
 binder_call(hal_bluetooth_server, hal_bluetooth_client)
 
-add_hwservice(hal_bluetooth_server, hal_bluetooth_hwservice)
 hal_attribute_hwservice_client(hal_bluetooth, hal_bluetooth_hwservice)
 
 wakelock_use(hal_bluetooth);
diff --git a/public/hal_bootctl.te b/public/hal_bootctl.te
index a901cf292db735a27fde5bd99d3734d9212a13c2..88eb040fdae0d75fff6d01a0a890240b21aa3067 100644
--- a/public/hal_bootctl.te
+++ b/public/hal_bootctl.te
@@ -2,7 +2,6 @@
 binder_call(hal_bootctl_client, hal_bootctl_server)
 binder_call(hal_bootctl_server, hal_bootctl_client)
 
-add_hwservice(hal_bootctl_server, hal_bootctl_hwservice)
 hal_attribute_hwservice_client(hal_bootctl, hal_bootctl_hwservice)
 
 dontaudit hal_bootctl self:capability sys_rawio;
diff --git a/public/hal_broadcastradio.te b/public/hal_broadcastradio.te
index 45adb4a7af81afd1e66c018f087017179d5f9450..ea0d478cf158bcd2a97cb45b0dfaa27d935b2b6a 100644
--- a/public/hal_broadcastradio.te
+++ b/public/hal_broadcastradio.te
@@ -1,4 +1,3 @@
 binder_call(hal_broadcastradio_client, hal_broadcastradio_server)
 
-add_hwservice(hal_broadcastradio_server, hal_broadcastradio_hwservice)
 hal_attribute_hwservice_client(hal_broadcastradio, hal_broadcastradio_hwservice)
diff --git a/public/hal_camera.te b/public/hal_camera.te
index 4e807948417b54236de5ecd101bb1ccec695b14e..96c84595e15178e25f94f51e5a6d2f061535ef26 100644
--- a/public/hal_camera.te
+++ b/public/hal_camera.te
@@ -2,7 +2,6 @@
 binder_call(hal_camera_client, hal_camera_server)
 binder_call(hal_camera_server, hal_camera_client)
 
-add_hwservice(hal_camera_server, hal_camera_hwservice)
 hal_attribute_hwservice_client(hal_camera, hal_camera_hwservice)
 
 allow hal_camera device:dir r_dir_perms;
diff --git a/public/hal_cas.te b/public/hal_cas.te
index 0ba39edac62c153f6ac75112d4d8f9a5b97ff640..28e0c7c6bb2e0d2444d2c12c37375b2854921455 100644
--- a/public/hal_cas.te
+++ b/public/hal_cas.te
@@ -2,7 +2,6 @@
 binder_call(hal_cas_client, hal_cas_server)
 binder_call(hal_cas_server, hal_cas_client)
 
-add_hwservice(hal_cas_server, hal_cas_hwservice)
 hal_attribute_hwservice_client(hal_cas, hal_cas_hwservice)
 allow hal_cas_server hidl_memory_hwservice:hwservice_manager find;
 
diff --git a/public/hal_confirmationui.te b/public/hal_confirmationui.te
index 9a7e697834c1fdb83e43a81a50548b003b2678c1..e70f8858361bca5905ea9c5a0468272258cf9e2d 100644
--- a/public/hal_confirmationui.te
+++ b/public/hal_confirmationui.te
@@ -1,5 +1,4 @@
 # HwBinder IPC from client to server
 binder_call(hal_confirmationui_client, hal_confirmationui_server)
 
-add_hwservice(hal_confirmationui_server, hal_confirmationui_hwservice)
 hal_attribute_hwservice_client(hal_confirmationui, hal_confirmationui_hwservice)
diff --git a/public/hal_contexthub.te b/public/hal_contexthub.te
index 0f23ae51b8c3a960ec60f779c5a73f06632c960d..9dcc7a07dd3ec69aa36ceb03e9bc4c32c83fa7d3 100644
--- a/public/hal_contexthub.te
+++ b/public/hal_contexthub.te
@@ -2,5 +2,4 @@
 binder_call(hal_contexthub_client, hal_contexthub_server)
 binder_call(hal_contexthub_server, hal_contexthub_client)
 
-add_hwservice(hal_contexthub_server, hal_contexthub_hwservice)
 hal_attribute_hwservice_client(hal_contexthub, hal_contexthub_hwservice)
diff --git a/public/hal_drm.te b/public/hal_drm.te
index 0a03a95a30e5891ddea9ef40b1f57639ac598709..4b1ed5dc17b7a10bd61349dd323a6a34107981c6 100644
--- a/public/hal_drm.te
+++ b/public/hal_drm.te
@@ -2,7 +2,6 @@
 binder_call(hal_drm_client, hal_drm_server)
 binder_call(hal_drm_server, hal_drm_client)
 
-add_hwservice(hal_drm_server, hal_drm_hwservice)
 hal_attribute_hwservice_client(hal_drm, hal_drm_hwservice)
 
 allow hal_drm hidl_memory_hwservice:hwservice_manager find;
diff --git a/public/hal_dumpstate.te b/public/hal_dumpstate.te
index 75e59f3b45fc8e369e828c99f777191dfc73b530..8fbe207738ec61a95d0dbe667c9fb73e6f3f5572 100644
--- a/public/hal_dumpstate.te
+++ b/public/hal_dumpstate.te
@@ -2,7 +2,6 @@
 binder_call(hal_dumpstate_client, hal_dumpstate_server)
 binder_call(hal_dumpstate_server, hal_dumpstate_client)
 
-add_hwservice(hal_dumpstate_server, hal_dumpstate_hwservice)
 hal_attribute_hwservice_client(hal_dumpstate, hal_dumpstate_hwservice)
 
 # write bug reports in /data/data/com.android.shell/files/bugreports/bugreport
diff --git a/public/hal_fingerprint.te b/public/hal_fingerprint.te
index 240f1ddade10044edc49d04eaab63e0dd426ef73..f1b8159c9ea6f2fa20f84c8b2cb7dd854e7cb81e 100644
--- a/public/hal_fingerprint.te
+++ b/public/hal_fingerprint.te
@@ -2,7 +2,6 @@
 binder_call(hal_fingerprint_client, hal_fingerprint_server)
 binder_call(hal_fingerprint_server, hal_fingerprint_client)
 
-add_hwservice(hal_fingerprint_server, hal_fingerprint_hwservice)
 hal_attribute_hwservice_client(hal_fingerprint, hal_fingerprint_hwservice)
 
 # For memory allocation
diff --git a/public/hal_gatekeeper.te b/public/hal_gatekeeper.te
index 0ff8f08442832d2b913539150f545fc4b08c68ff..64482c8416164b68fbfdd3d4c10cbaeabddb539d 100644
--- a/public/hal_gatekeeper.te
+++ b/public/hal_gatekeeper.te
@@ -1,6 +1,5 @@
 binder_call(hal_gatekeeper_client, hal_gatekeeper_server)
 
-add_hwservice(hal_gatekeeper_server, hal_gatekeeper_hwservice)
 hal_attribute_hwservice_client(hal_gatekeeper, hal_gatekeeper_hwservice)
 
 # TEE access.
diff --git a/public/hal_gnss.te b/public/hal_gnss.te
index 7e206a8ffa2a4988ec05fc7c1679a9251c216f8a..a2cdad76340dfae71a50f171dcda02e7ecfd01fa 100644
--- a/public/hal_gnss.te
+++ b/public/hal_gnss.te
@@ -2,5 +2,4 @@
 binder_call(hal_gnss_client, hal_gnss_server)
 binder_call(hal_gnss_server, hal_gnss_client)
 
-add_hwservice(hal_gnss_server, hal_gnss_hwservice)
 hal_attribute_hwservice_client(hal_gnss, hal_gnss_hwservice)
diff --git a/public/hal_graphics_allocator.te b/public/hal_graphics_allocator.te
index 753b816d7e9a2595149aabe95041dc9ed0801e98..7cfa1d629733d1ebffd39a9249e04b8ed4ca4917 100644
--- a/public/hal_graphics_allocator.te
+++ b/public/hal_graphics_allocator.te
@@ -1,7 +1,6 @@
 # HwBinder IPC from client to server
 binder_call(hal_graphics_allocator_client, hal_graphics_allocator_server)
 
-add_hwservice(hal_graphics_allocator_server, hal_graphics_allocator_hwservice)
 hal_attribute_hwservice_client(hal_graphics_allocator, hal_graphics_allocator_hwservice)
 allow hal_graphics_allocator_client hal_graphics_mapper_hwservice:hwservice_manager find;
 
diff --git a/public/hal_graphics_composer.te b/public/hal_graphics_composer.te
index e6854f6f3f2681c8063ee5289756b46d7072886c..90acd83c82a5186c2caea29c0923f58836006b0f 100644
--- a/public/hal_graphics_composer.te
+++ b/public/hal_graphics_composer.te
@@ -2,7 +2,6 @@
 binder_call(hal_graphics_composer_client, hal_graphics_composer_server)
 binder_call(hal_graphics_composer_server, hal_graphics_composer_client)
 
-add_hwservice(hal_graphics_composer_server, hal_graphics_composer_hwservice)
 hal_attribute_hwservice_client(hal_graphics_composer, hal_graphics_composer_hwservice)
 
 # Coordinate with hal_graphics_mapper
diff --git a/public/hal_health.te b/public/hal_health.te
index f6d5d3b8e5e1bde1b44634bd7c4e4edb8fc84e09..3986c1ce9cee8dd7963d36e5f182bec8a7cfc070 100644
--- a/public/hal_health.te
+++ b/public/hal_health.te
@@ -2,7 +2,6 @@
 binder_call(hal_health_client, hal_health_server)
 binder_call(hal_health_server, hal_health_client)
 
-add_hwservice(hal_health_server, hal_health_hwservice)
 hal_attribute_hwservice_client(hal_health, hal_health_hwservice)
 
 # Read access to system files for HALs in
diff --git a/public/hal_ir.te b/public/hal_ir.te
index 022d5eeb625ba4e6bac5d7e0bbf0a2640d49a4c0..51549f30d9b976599b5b94ff2156cf5797470fda 100644
--- a/public/hal_ir.te
+++ b/public/hal_ir.te
@@ -2,5 +2,4 @@
 binder_call(hal_ir_client, hal_ir_server)
 binder_call(hal_ir_server, hal_ir_client)
 
-add_hwservice(hal_ir_server, hal_ir_hwservice)
 hal_attribute_hwservice_client(hal_ir, hal_ir_hwservice)
diff --git a/public/hal_keymaster.te b/public/hal_keymaster.te
index 664f2774bf9d793f39c46db2a61d4c4fcc43ffe4..81f466fbf3f4cc4a2710e087e8fb7ab8fc6db309 100644
--- a/public/hal_keymaster.te
+++ b/public/hal_keymaster.te
@@ -1,7 +1,6 @@
 # HwBinder IPC from client to server
 binder_call(hal_keymaster_client, hal_keymaster_server)
 
-add_hwservice(hal_keymaster_server, hal_keymaster_hwservice)
 hal_attribute_hwservice_client(hal_keymaster, hal_keymaster_hwservice)
 
 allow hal_keymaster tee_device:chr_file rw_file_perms;
diff --git a/public/hal_light.te b/public/hal_light.te
index 841b17ab0a193f651b21eb0f0b1366dbe69f8ace..44f1cc9ff20005acc719770b7f815bdeae7ca0d4 100644
--- a/public/hal_light.te
+++ b/public/hal_light.te
@@ -2,7 +2,6 @@
 binder_call(hal_light_client, hal_light_server)
 binder_call(hal_light_server, hal_light_client)
 
-add_hwservice(hal_light_server, hal_light_hwservice)
 hal_attribute_hwservice_client(hal_light, hal_light_hwservice)
 
 allow hal_light sysfs_leds:lnk_file read;
diff --git a/public/hal_lowpan.te b/public/hal_lowpan.te
index 5bb36f96fd11f402a68bc09c0f01000132031453..ff25c825b10707e74fbd709730317f638178e97d 100644
--- a/public/hal_lowpan.te
+++ b/public/hal_lowpan.te
@@ -2,7 +2,6 @@
 binder_call(hal_lowpan_client, hal_lowpan_server)
 binder_call(hal_lowpan_server, hal_lowpan_client)
 
-add_hwservice(hal_lowpan_server, hal_lowpan_hwservice)
 
 # Allow hal_lowpan_client to be able to find the hal_lowpan_server
 hal_attribute_hwservice_client(hal_lowpan, hal_lowpan_hwservice)
diff --git a/public/hal_memtrack.te b/public/hal_memtrack.te
index 8185fd144d07c6525e681383eb5d5d2abbd873d0..4df040fbd77cd8595915fb6619f27294b96ab5f9 100644
--- a/public/hal_memtrack.te
+++ b/public/hal_memtrack.te
@@ -1,5 +1,4 @@
 # HwBinder IPC from client to server
 binder_call(hal_memtrack_client, hal_memtrack_server)
 
-add_hwservice(hal_memtrack_server, hal_memtrack_hwservice)
 hal_attribute_hwservice_client(hal_memtrack, hal_memtrack_hwservice)
diff --git a/public/hal_neuralnetworks.te b/public/hal_neuralnetworks.te
index 149f76811fa89f11b2216f2005394cd92dd095de..2580a6b7d397f958245249a66b50693bbd4471ea 100644
--- a/public/hal_neuralnetworks.te
+++ b/public/hal_neuralnetworks.te
@@ -2,7 +2,6 @@
 binder_call(hal_neuralnetworks_client, hal_neuralnetworks_server)
 binder_call(hal_neuralnetworks_server, hal_neuralnetworks_client)
 
-add_hwservice(hal_neuralnetworks_server, hal_neuralnetworks_hwservice)
 hal_attribute_hwservice_client(hal_neuralnetworks, hal_neuralnetworks_hwservice)
 allow hal_neuralnetworks hidl_memory_hwservice:hwservice_manager find;
 allow hal_neuralnetworks hal_allocator:fd use;
diff --git a/public/hal_nfc.te b/public/hal_nfc.te
index caa4c823b3103f05ff190e6e655a4f2d9095db8b..334952622e609b93d7241aab182208e529c4dfc1 100644
--- a/public/hal_nfc.te
+++ b/public/hal_nfc.te
@@ -2,7 +2,6 @@
 binder_call(hal_nfc_client, hal_nfc_server)
 binder_call(hal_nfc_server, hal_nfc_client)
 
-add_hwservice(hal_nfc_server, hal_nfc_hwservice)
 hal_attribute_hwservice_client(hal_nfc, hal_nfc_hwservice)
 
 # Set NFC properties (used by bcm2079x HAL).
diff --git a/public/hal_oemlock.te b/public/hal_oemlock.te
index d118f43cd7505162c248b857f50fa1d9de7211a9..a55e4274b1b0f2d51e4b173d4d1630661ec3e6f8 100644
--- a/public/hal_oemlock.te
+++ b/public/hal_oemlock.te
@@ -1,5 +1,4 @@
 # HwBinder IPC from client to server
 binder_call(hal_oemlock_client, hal_oemlock_server)
 
-add_hwservice(hal_oemlock_server, hal_oemlock_hwservice)
 hal_attribute_hwservice_client(hal_oemlock, hal_oemlock_hwservice)
diff --git a/public/hal_omx.te b/public/hal_omx.te
index 375f386c3550a3ec945ebdd1d8362568ca7f96a0..8543cac6aa5e231db8a4de93fd0dc198485a0ae3 100644
--- a/public/hal_omx.te
+++ b/public/hal_omx.te
@@ -1,8 +1,6 @@
 # applies all permissions to hal_omx NOT hal_omx_server
 # since OMX must always be in its own process.
 
-add_hwservice(hal_omx_server, hal_codec2_hwservice)
-add_hwservice(hal_omx_server, hal_omx_hwservice)
 
 # can route /dev/binder traffic to /dev/vndbinder
 vndbinder_use(hal_omx_server)
diff --git a/public/hal_power.te b/public/hal_power.te
index 26fbd4c3078200b129c652d2e03308b1eac5cab9..044c0e834d372511757ca800933321be03e828e3 100644
--- a/public/hal_power.te
+++ b/public/hal_power.te
@@ -2,5 +2,4 @@
 binder_call(hal_power_client, hal_power_server)
 binder_call(hal_power_server, hal_power_client)
 
-add_hwservice(hal_power_server, hal_power_hwservice)
 hal_attribute_hwservice_client(hal_power, hal_power_hwservice)
diff --git a/public/hal_secure_element.te b/public/hal_secure_element.te
index 8410c772d1d80d8987ef5370988ae281972cd134..848ccbf9a413fcc9a9bb10ec30ec5b1b14829cc1 100644
--- a/public/hal_secure_element.te
+++ b/public/hal_secure_element.te
@@ -2,5 +2,4 @@
 binder_call(hal_secure_element_client, hal_secure_element_server)
 binder_call(hal_secure_element_server, hal_secure_element_client)
 
-add_hwservice(hal_secure_element_server, hal_secure_element_hwservice)
 hal_attribute_hwservice_client(hal_secure_element, hal_secure_element_hwservice)
diff --git a/public/hal_sensors.te b/public/hal_sensors.te
index 603eead92ef872b35aa7865a872c1941cbe8530c..6ed729216076ded22da57b0c48b7cffe71cbef28 100644
--- a/public/hal_sensors.te
+++ b/public/hal_sensors.te
@@ -1,7 +1,6 @@
 # HwBinder IPC from client to server
 binder_call(hal_sensors_client, hal_sensors_server)
 
-add_hwservice(hal_sensors_server, hal_sensors_hwservice)
 hal_attribute_hwservice_client(hal_sensors, hal_sensors_hwservice)
 
 # Allow sensor hals to access ashmem memory allocated by apps
diff --git a/public/hal_telephony.te b/public/hal_telephony.te
index a20350b41265e6c2a425fdcfc7518138c70e02cb..f07f0bab8aaaecd9b999e358934677ba9ad063a5 100644
--- a/public/hal_telephony.te
+++ b/public/hal_telephony.te
@@ -2,7 +2,6 @@
 binder_call(hal_telephony_client, hal_telephony_server)
 binder_call(hal_telephony_server, hal_telephony_client)
 
-add_hwservice(hal_telephony_server, hal_telephony_hwservice)
 hal_attribute_hwservice_client(hal_telephony, hal_telephony_hwservice)
 
 allowxperm hal_telephony_server self:udp_socket ioctl priv_sock_ioctls;
diff --git a/public/hal_thermal.te b/public/hal_thermal.te
index 105e882a4997eeb72cc71f48dbc0e743078b2af7..84ed0c54e1c4c5516b2d865873d4c60cbd6b371d 100644
--- a/public/hal_thermal.te
+++ b/public/hal_thermal.te
@@ -2,5 +2,4 @@
 binder_call(hal_thermal_client, hal_thermal_server)
 binder_call(hal_thermal_server, hal_thermal_client)
 
-add_hwservice(hal_thermal_server, hal_thermal_hwservice)
 hal_attribute_hwservice_client(hal_thermal, hal_thermal_hwservice)
diff --git a/public/hal_tv_cec.te b/public/hal_tv_cec.te
index 9ee2e3eedf27d9bfbc0f34b39a0fb342e0e2000a..5cd3d2dae56b9eef9f1a3db00a1d5c52f1c86082 100644
--- a/public/hal_tv_cec.te
+++ b/public/hal_tv_cec.te
@@ -2,5 +2,4 @@
 binder_call(hal_tv_cec_client, hal_tv_cec_server)
 binder_call(hal_tv_cec_server, hal_tv_cec_client)
 
-add_hwservice(hal_tv_cec_server, hal_tv_cec_hwservice)
 hal_attribute_hwservice_client(hal_tv_cec, hal_tv_cec_hwservice)
diff --git a/public/hal_tv_input.te b/public/hal_tv_input.te
index cee55bde33436b46e18a9eb19c62d99e8d4f3583..3799938bbb21200590bdebde273e2087c8dd8d9a 100644
--- a/public/hal_tv_input.te
+++ b/public/hal_tv_input.te
@@ -2,5 +2,4 @@
 binder_call(hal_tv_input_client, hal_tv_input_server)
 binder_call(hal_tv_input_server, hal_tv_input_client)
 
-add_hwservice(hal_tv_input_server, hal_tv_input_hwservice)
 hal_attribute_hwservice_client(hal_tv_input, hal_tv_input_hwservice)
diff --git a/public/hal_usb.te b/public/hal_usb.te
index 52fdce224d01c8a6b870b368ccbe23b5269b3f1c..81ef1c7ad44611fefd2927a02be0b52a085da1a5 100644
--- a/public/hal_usb.te
+++ b/public/hal_usb.te
@@ -2,7 +2,6 @@
 binder_call(hal_usb_client, hal_usb_server)
 binder_call(hal_usb_server, hal_usb_client)
 
-add_hwservice(hal_usb_server, hal_usb_hwservice)
 hal_attribute_hwservice_client(hal_usb, hal_usb_hwservice)
 
 allow hal_usb self:netlink_kobject_uevent_socket create;
diff --git a/public/hal_usb_gadget.te b/public/hal_usb_gadget.te
index 41683b0cd1c31988b97cfa88cecf8bdd91401318..b8e347f284d503a5580f85fe2b1f66946b16c4fb 100644
--- a/public/hal_usb_gadget.te
+++ b/public/hal_usb_gadget.te
@@ -2,7 +2,6 @@
 binder_call(hal_usb_gadget_client, hal_usb_gadget_server)
 binder_call(hal_usb_gadget_server, hal_usb_gadget_client)
 
-add_hwservice(hal_usb_gadget_server, hal_usb_gadget_hwservice)
 hal_attribute_hwservice_client(hal_usb_gadget, hal_usb_gadget_hwservice)
 
 # Configuring usb gadget functions
diff --git a/public/hal_vehicle.te b/public/hal_vehicle.te
index d021da3440b3c5de7889f86583859e1ba6e76fc2..ea8b65220768e1e376ca1ec0332a5cf7bc9450a7 100644
--- a/public/hal_vehicle.te
+++ b/public/hal_vehicle.te
@@ -2,6 +2,5 @@
 binder_call(hal_vehicle_client, hal_vehicle_server)
 binder_call(hal_vehicle_server, hal_vehicle_client)
 
-add_hwservice(hal_vehicle_server, hal_vehicle_hwservice)
 
 hal_attribute_hwservice_client(hal_vehicle, hal_vehicle_hwservice)
diff --git a/public/hal_vibrator.te b/public/hal_vibrator.te
index ba6830d7002cc4d923c7310715efb5ba3c0aa007..0b9d168122f68e3b55869e665d310be933876c42 100644
--- a/public/hal_vibrator.te
+++ b/public/hal_vibrator.te
@@ -1,7 +1,6 @@
 # HwBinder IPC from client to server
 binder_call(hal_vibrator_client, hal_vibrator_server)
 
-add_hwservice(hal_vibrator_server, hal_vibrator_hwservice)
 hal_attribute_hwservice_client(hal_vibrator, hal_vibrator_hwservice)
 
 # vibrator sysfs rw access
diff --git a/public/hal_vr.te b/public/hal_vr.te
index 4afe3cdeb1a92deab927b9f1813bdad9dac554aa..7286cd06d719e81a164f332f291db4f7e4d87105 100644
--- a/public/hal_vr.te
+++ b/public/hal_vr.te
@@ -2,5 +2,4 @@
 binder_call(hal_vr_client, hal_vr_server)
 binder_call(hal_vr_server, hal_vr_client)
 
-add_hwservice(hal_vr_server, hal_vr_hwservice)
 hal_attribute_hwservice_client(hal_vr, hal_vr_hwservice)
diff --git a/public/hal_weaver.te b/public/hal_weaver.te
index 405321def16bfa9f5cbea3d6afa5704642a80599..0ea4c6e9b699092882e3bb20deb1b8995d711046 100644
--- a/public/hal_weaver.te
+++ b/public/hal_weaver.te
@@ -1,5 +1,4 @@
 # HwBinder IPC from client to server
 binder_call(hal_weaver_client, hal_weaver_server)
 
-add_hwservice(hal_weaver_server, hal_weaver_hwservice)
 hal_attribute_hwservice_client(hal_weaver, hal_weaver_hwservice)
diff --git a/public/hal_wifi.te b/public/hal_wifi.te
index 45738e20925cb32a583297de8075b521ee666062..b67a43e11c4fbbc962a7233260cdd4e5cf6fdf5b 100644
--- a/public/hal_wifi.te
+++ b/public/hal_wifi.te
@@ -2,7 +2,6 @@
 binder_call(hal_wifi_client, hal_wifi_server)
 binder_call(hal_wifi_server, hal_wifi_client)
 
-add_hwservice(hal_wifi_server, hal_wifi_hwservice)
 hal_attribute_hwservice_client(hal_wifi, hal_wifi_hwservice)
 
 r_dir_file(hal_wifi, proc_net_type)
diff --git a/public/hal_wifi_hostapd.te b/public/hal_wifi_hostapd.te
index ea84a36e2a42102093032194724a5e4ea9bdb4d4..7466d04071ea2e01ead68ee85ca72b6b43f0397e 100644
--- a/public/hal_wifi_hostapd.te
+++ b/public/hal_wifi_hostapd.te
@@ -2,7 +2,6 @@
 binder_call(hal_wifi_hostapd_client, hal_wifi_hostapd_server)
 binder_call(hal_wifi_hostapd_server, hal_wifi_hostapd_client)
 
-add_hwservice(hal_wifi_hostapd_server, hal_wifi_hostapd_hwservice)
 hal_attribute_hwservice_client(hal_wifi_hostapd, hal_wifi_hostapd_hwservice)
 
 allow hal_wifi_hostapd_server self:global_capability_class_set { net_admin net_raw };
diff --git a/public/hal_wifi_offload.te b/public/hal_wifi_offload.te
index 1b75711d7308fa95baf70c54cf35640e7ec19b54..59860f7cc05b747b4492be62102a17a281f7a325 100644
--- a/public/hal_wifi_offload.te
+++ b/public/hal_wifi_offload.te
@@ -2,7 +2,6 @@
 binder_call(hal_wifi_offload_client, hal_wifi_offload_server)
 binder_call(hal_wifi_offload_server, hal_wifi_offload_client)
 
-add_hwservice(hal_wifi_offload_server, hal_wifi_offload_hwservice)
 hal_attribute_hwservice_client(hal_wifi_offload, hal_wifi_offload_hwservice)
 
 r_dir_file(hal_wifi_offload, proc_net_type)
diff --git a/public/hal_wifi_supplicant.te b/public/hal_wifi_supplicant.te
index 87a061f4db582459ee2a7f0e4ce8386b218bb7ae..2de2723b3742d5fbf6a705ed046f01f419d24758 100644
--- a/public/hal_wifi_supplicant.te
+++ b/public/hal_wifi_supplicant.te
@@ -2,7 +2,6 @@
 binder_call(hal_wifi_supplicant_client, hal_wifi_supplicant_server)
 binder_call(hal_wifi_supplicant_server, hal_wifi_supplicant_client)
 
-add_hwservice(hal_wifi_supplicant_server, hal_wifi_supplicant_hwservice)
 hal_attribute_hwservice_client(hal_wifi_supplicant, hal_wifi_supplicant_hwservice)
 
 # in addition to ioctls whitelisted for all domains, grant hal_wifi_supplicant priv_sock_ioctls.
diff --git a/public/te_macros b/public/te_macros
index ffb84281f915cd7f89257aad5d93fafab2ed7722..59591b49589a81ca3ebd30f1856fb10cd88f4f87 100644
--- a/public/te_macros
+++ b/public/te_macros
@@ -614,4 +614,6 @@ define(`add_hwservice', `
 define(`hal_attribute_hwservice_client', `
   allow $1_client $2:hwservice_manager find;
   neverallow { domain -$1_client -$1_server } $2:hwservice_manager find;
+
+  add_hwservice($1_server, $2)
 ')