blob: c50faef31feb66d07123700c1a2b4a275476ac99 [file] [log] [blame]
Alex Klyubin5d30beb2017-02-07 10:05:07 -08001# surfaceflinger - display compositor service
2
Alex Klyubinf5446eb2017-03-23 14:27:32 -07003typeattribute surfaceflinger coredomain;
4
Nick Kralevich5e372712018-09-27 10:21:37 -07005type surfaceflinger_exec, system_file_type, exec_type, file_type;
dcashmancc39f632016-07-22 13:13:11 -07006init_daemon_domain(surfaceflinger)
Alex Klyubin5d30beb2017-02-07 10:05:07 -08007
8typeattribute surfaceflinger mlstrustedsubject;
Steven Morelande8ab0022017-05-16 17:43:52 -07009typeattribute surfaceflinger display_service_server;
Alex Klyubin5d30beb2017-02-07 10:05:07 -080010
11read_runtime_log_tags(surfaceflinger)
12
13# Perform HwBinder IPC.
Alex Klyubin9e6b24c2017-03-16 18:48:40 -070014hal_client_domain(surfaceflinger, hal_graphics_allocator)
Alex Klyubin9e6b24c2017-03-16 18:48:40 -070015hal_client_domain(surfaceflinger, hal_graphics_composer)
Pawin Vongmasaff2dcca2018-06-29 17:02:23 -070016hal_client_domain(surfaceflinger, hal_omx)
Alex Klyubin9e6b24c2017-03-16 18:48:40 -070017hal_client_domain(surfaceflinger, hal_configstore)
Peiyong Lin02be5972018-06-22 10:37:10 -070018hal_client_domain(surfaceflinger, hal_power)
Alex Klyubin53656c12017-04-13 19:05:27 -070019allow surfaceflinger hidl_token_hwservice:hwservice_manager find;
Alex Klyubin5d30beb2017-02-07 10:05:07 -080020
21# Perform Binder IPC.
22binder_use(surfaceflinger)
23binder_call(surfaceflinger, binderservicedomain)
24binder_call(surfaceflinger, appdomain)
25binder_call(surfaceflinger, bootanim)
26binder_service(surfaceflinger)
27
28# Binder IPC to bu, presently runs in adbd domain.
29binder_call(surfaceflinger, adbd)
30
31# Read /proc/pid files for Binder clients.
32r_dir_file(surfaceflinger, binderservicedomain)
33r_dir_file(surfaceflinger, appdomain)
34
35# Access the GPU.
36allow surfaceflinger gpu_device:chr_file rw_file_perms;
37
38# Access /dev/graphics/fb0.
39allow surfaceflinger graphics_device:dir search;
40allow surfaceflinger graphics_device:chr_file rw_file_perms;
41
42# Access /dev/video1.
43allow surfaceflinger video_device:dir r_dir_perms;
44allow surfaceflinger video_device:chr_file rw_file_perms;
45
46# Create and use netlink kobject uevent sockets.
47allow surfaceflinger self:netlink_kobject_uevent_socket create_socket_perms_no_ioctl;
48
49# Set properties.
50set_prop(surfaceflinger, system_prop)
Jaekyun Seoke4971452017-10-19 16:54:49 +090051set_prop(surfaceflinger, exported_system_prop)
52set_prop(surfaceflinger, exported2_system_prop)
53set_prop(surfaceflinger, exported3_system_prop)
Alex Klyubin5d30beb2017-02-07 10:05:07 -080054set_prop(surfaceflinger, ctl_bootanim_prop)
55
56# Use open files supplied by an app.
57allow surfaceflinger appdomain:fd use;
Nick Kralevich23c9d912018-08-02 15:54:23 -070058allow surfaceflinger { app_data_file privapp_data_file }:file { read write };
Alex Klyubin5d30beb2017-02-07 10:05:07 -080059
Vishnu Nair2d6942d2017-11-17 08:23:32 -080060# Allow writing surface traces to /data/misc/wmtrace.
61userdebug_or_eng(`
62 allow surfaceflinger wm_trace_data_file:dir rw_dir_perms;
63 allow surfaceflinger wm_trace_data_file:file { getattr setattr create w_file_perms };
64')
65
Chris Forbes676003c2017-04-28 10:10:36 -070066# Use socket supplied by adbd, for cmd gpu vkjson etc.
67allow surfaceflinger adbd:unix_stream_socket { read write getattr };
68
Alex Klyubin5d30beb2017-02-07 10:05:07 -080069# Allow a dumpstate triggered screenshot
70binder_call(surfaceflinger, dumpstate)
71binder_call(surfaceflinger, shell)
72r_dir_file(surfaceflinger, dumpstate)
73
74# Needed on some devices for playing DRM protected content,
75# but seems expected and appropriate for all devices.
Alex Klyubin5d30beb2017-02-07 10:05:07 -080076allow surfaceflinger tee_device:chr_file rw_file_perms;
77
Alex Klyubin5d30beb2017-02-07 10:05:07 -080078# media.player service
Alex Klyubin5d30beb2017-02-07 10:05:07 -080079
80# do not use add_service() as hal_graphics_composer_default may be the
81# provider as well
82#add_service(surfaceflinger, surfaceflinger_service)
83allow surfaceflinger surfaceflinger_service:service_manager { add find };
84
Steven Thomas7bec9672018-07-13 17:17:01 -070085add_service(surfaceflinger, vrflinger_vsync_service)
86
Alex Klyubin5d30beb2017-02-07 10:05:07 -080087allow surfaceflinger mediaserver_service:service_manager find;
88allow surfaceflinger permission_service:service_manager find;
89allow surfaceflinger power_service:service_manager find;
Jeff Vander Stoep8bf3b7a2017-02-10 13:33:56 -080090allow surfaceflinger vr_manager_service:service_manager find;
Alex Klyubin5d30beb2017-02-07 10:05:07 -080091allow surfaceflinger window_service:service_manager find;
Robert Carra49b27a2018-11-16 13:32:58 -080092allow surfaceflinger inputflinger_service:service_manager find;
Alex Klyubin5d30beb2017-02-07 10:05:07 -080093
Jeff Vander Stoep8bf3b7a2017-02-10 13:33:56 -080094
Alex Klyubin5d30beb2017-02-07 10:05:07 -080095# allow self to set SCHED_FIFO
Benjamin Gordon9b2e0cb2017-11-09 15:51:26 -070096allow surfaceflinger self:global_capability_class_set sys_nice;
Alex Klyubin5d30beb2017-02-07 10:05:07 -080097allow surfaceflinger proc_meminfo:file r_file_perms;
98r_dir_file(surfaceflinger, cgroup)
Alex Klyubin5d30beb2017-02-07 10:05:07 -080099r_dir_file(surfaceflinger, system_file)
100allow surfaceflinger tmpfs:dir r_dir_perms;
101allow surfaceflinger system_server:fd use;
Robert Carra49b27a2018-11-16 13:32:58 -0800102allow surfaceflinger system_server:unix_stream_socket { read write };
Alex Klyubin5d30beb2017-02-07 10:05:07 -0800103allow surfaceflinger ion_device:chr_file r_file_perms;
104
Nick Bray084faf02017-02-09 15:15:11 -0800105# pdx IPC
Alex Vakulenko41daa7f2017-05-01 13:01:44 -0700106pdx_server(surfaceflinger, display_client)
107pdx_server(surfaceflinger, display_manager)
108pdx_server(surfaceflinger, display_screenshot)
109pdx_server(surfaceflinger, display_vsync)
Nick Bray084faf02017-02-09 15:15:11 -0800110
Alex Vakulenko41daa7f2017-05-01 13:01:44 -0700111pdx_client(surfaceflinger, bufferhub_client)
112pdx_client(surfaceflinger, performance_client)
Nick Bray084faf02017-02-09 15:15:11 -0800113
Alex Klyubin5d30beb2017-02-07 10:05:07 -0800114###
115### Neverallow rules
116###
117### surfaceflinger should NEVER do any of this
118
119# Do not allow accessing SDcard files as unsafe ejection could
120# cause the kernel to kill the process.
121neverallow surfaceflinger sdcard_type:file rw_file_perms;
Joel Galensonf7ec4132018-02-14 16:32:28 -0800122
123# b/68864350
124dontaudit surfaceflinger unlabeled:dir search;