diff --git a/private/file_contexts b/private/file_contexts
index 678fd05c4c64faec3648c8b1174b22c84858cfef..70dde3aa0316b8f2a6607680c1df9f4de7d85919 100644
--- a/private/file_contexts
+++ b/private/file_contexts
@@ -231,6 +231,7 @@
 /system/lib(64)?/libart.*        u:object_r:libart_file:s0
 /system/bin/hw/android\.hardware\.audio@2\.0-service          u:object_r:hal_audio_default_exec:s0
 /system/bin/hw/android\.hardware\.boot@1\.0-service           u:object_r:hal_boot_exec:s0
+/system/bin/hw/android\.hardware\.dumpstate@1\.0-service      u:object_r:hal_dumpstate_default_exec:s0
 /system/bin/hw/android\.hardware\.graphics\.allocator@2\.0-service   u:object_r:hal_graphics_allocator_default_exec:s0
 /system/bin/hw/android\.hardware\.graphics\.composer@2\.1-service    u:object_r:hal_graphics_composer_default_exec:s0
 /system/bin/hw/android\.hardware\.health@1\.0-service         u:object_r:hal_health_exec:s0
diff --git a/private/hal_dumpstate_default.te b/private/hal_dumpstate_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..46160397b604fefa4bc6587288e3b408758bb109
--- /dev/null
+++ b/private/hal_dumpstate_default.te
@@ -0,0 +1,4 @@
+type hal_dumpstate_default, hal_dumpstate, domain;
+type hal_dumpstate_default_exec, exec_type, file_type;
+
+init_daemon_domain(hal_dumpstate_default)
diff --git a/public/attributes b/public/attributes
index 9331437802ae6b661ee59391f2ef139cab016be1..4cfc0987a7382e598dc67de85dc56f20d068df19 100644
--- a/public/attributes
+++ b/public/attributes
@@ -116,6 +116,7 @@ attribute update_engine_common;
 
 # HALs
 attribute hal_audio;
+attribute hal_dumpstate;
 attribute hal_graphics_allocator;
 attribute hal_graphics_composer;
 attribute hal_ir;
diff --git a/public/dumpstate.te b/public/dumpstate.te
index 1d3a270aabbb78dce7badca976adedb5429ac172..08d24ae5ea1043cf0f6ca26d6c0e469463e360be 100644
--- a/public/dumpstate.te
+++ b/public/dumpstate.te
@@ -99,6 +99,7 @@ binder_call(dumpstate, { appdomain ephemeral_app netd wificond })
 
 # Vibrate the device after we are done collecting the bugreport
 # For binderized mode:
+binder_call(dumpstate, hal_dumpstate)
 binder_call(dumpstate, hal_vibrator)
 binder_call(dumpstate, hwservicemanager)
 # For passthrough mode:
diff --git a/public/hal_dumpstate.te b/public/hal_dumpstate.te
new file mode 100644
index 0000000000000000000000000000000000000000..3312b0ad35fec3675374b1c45dbcf4f4f2cc9d3d
--- /dev/null
+++ b/public/hal_dumpstate.te
@@ -0,0 +1,5 @@
+# hwbinder access
+hwbinder_use(hal_dumpstate)
+
+# call into dumpstate process (callbacks)
+binder_call(hal_dumpstate, dumpstate)