Skip to content
Snippets Groups Projects
  1. Feb 17, 2017
    • Nick Kralevich's avatar
      fsck: allow stat access on /dev/block files · 585d9767
      Nick Kralevich authored
      To determine if it is safe to run fsck on a filesystem, e2fsck
      must first determine if the filesystem is mounted. To do that,
      e2fsck scans through /proc/mounts and collects all the mounted
      block devices. With that information, it runs stat() on each block
      device, comparing the major and minor numbers to the filesystem
      passed in on the command line. If there is a match, then the filesystem
      is currently mounted and running fsck is dangerous.
      Allow stat access to all block devices so that fsck can compare
      major/minor values.
      
      Addresses the following denials:
      
      avc: denied { getattr } for comm="e2fsck" path="/dev/block/sde5"
      dev="tmpfs" ino=15649 scontext=u:r:fsck:s0
      tcontext=u:object_r:metadata_block_device:s0 tclass=blk_file
      permissive=0
      
      avc: denied { getattr } for comm="e2fsck" path="/dev/block/sda25"
      dev="tmpfs" ino=15528 scontext=u:r:fsck:s0
      tcontext=u:object_r:modem_block_device:s0 tclass=blk_file permissive=0
      
      avc: denied { getattr } for comm="e2fsck" path="/dev/block/sda31"
      dev="tmpfs" ino=15552 scontext=u:r:fsck:s0
      tcontext=u:object_r:system_block_device:s0 tclass=blk_file permissive=0
      
      avc: denied { getattr } for comm="e2fsck" path="/dev/block/sdd3"
      dev="tmpfs" ino=15600 scontext=u:r:fsck:s0
      tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0
      
      Bug: 35324014
      Bug: 33781554
      Test: device boots and no SELinux denials.
      Change-Id: I5af4a334ec41952887914eec4eee5c60cc441a66
      585d9767
    • Alex Klyubin's avatar
      Switch Camera HAL policy to _client/_server · 3a8426bf
      Alex Klyubin authored
      This switches Camera HAL policy to the design which enables us to
      conditionally remove unnecessary rules from domains which are clients
      of Camera HAL.
      
      Domains which are clients of Camera HAL, such as cameraserver domain,
      are granted rules targeting hal_camera only when the Camera HAL runs
      in passthrough mode (i.e., inside the client's process). When the HAL
      runs in binderized mode (i.e., in another process/domain, with clients
      talking to the HAL over HwBinder IPC), rules targeting hal_camera are
      not granted to client domains.
      
      Domains which offer a binderized implementation of Camera HAL, such
      as hal_camera_default domain, are always granted rules targeting
      hal_camera.
      
      Test: Take non-HDR photo using Google Camera app
      Test: Take HDR photo using Google Camera app
      Test: Record video using Google Camera app
      Bug: 34170079
      Change-Id: I463646cf79fede57f11ccd4ec2cbc37a4fff141e
      3a8426bf
  2. Feb 16, 2017
  3. Feb 15, 2017
    • Eino-Ville Talvala's avatar
      System server: Allow get/setsched to hal_camera domain. · 6d9be831
      Eino-Ville Talvala authored
      Much like audio, the camera HAL may need to have key threads running
      in SCHED_FIFO or similar priority.  Allow system_server to raise
      thread priority for camera HALs to make this possible.
      
      Test: Video recording works, with EIS. No logspam about EIS failure.
      Bug: 35389145
      Change-Id: I1d92f9f10dc3aff22ce56b8b9cc57db043631919
      6d9be831
    • Alex Klyubin's avatar
      Use _client and _server for Audio HAL policy · ac2b4cd2
      Alex Klyubin authored
      This starts the switch for HAL policy to the approach where:
      * domains which are clients of Foo HAL are associated with
        hal_foo_client attribute,
      * domains which offer the Foo HAL service over HwBinder are
        associated with hal_foo_server attribute,
      * policy needed by the implementation of Foo HAL service is written
        against the hal_foo attribute. This policy is granted to domains
        which offer the Foo HAL service over HwBinder and, if Foo HAL runs
        in the so-called passthrough mode (inside the process of each
        client), also granted to all domains which are clients of Foo HAL.
        hal_foo is there to avoid duplicating the rules for hal_foo_client
        and hal_foo_server to cover the passthrough/in-process Foo HAL and
        binderized/out-of-process Foo HAL cases.
      
      A benefit of associating all domains which are clients of Foo HAL with
      hal_foo (when Foo HAL is in passthrough mode) is that this removes the
      need for device-specific policy to be able to reference these domains
      directly (in order to add device-specific allow rules). Instead,
      device-specific policy only needs to reference hal_foo and should no
      longer need to care which particular domains on the device are clients
      of Foo HAL. This can be seen in simplification of the rules for
      audioserver domain which is a client of Audio HAL whose policy is
      being restructured in this commit.
      
      This commit uses Audio HAL as an example to illustrate the approach.
      Once this commit lands, other HALs will also be switched to this
      approach.
      
      Test: Google Play Music plays back radios
      Test: Google Camera records video with sound and that video is then
            successfully played back with sound
      Test: YouTube app plays back clips with sound
      Test: YouTube in Chrome plays back clips with sound
      Bug: 34170079
      Change-Id: I2597a046753edef06123f0476c2ee6889fc17f20
      ac2b4cd2
    • Alex Klyubin's avatar
      Move hal_*_default policy to vendor image · ac1a6d44
      Alex Klyubin authored
      hal_*_default daemons whose policy is in common/device-agnostic policy
      are provided by the vendor image (see vendor/file_contexts). Thus,
      their policy should also reside in the vendor image, rather than in
      the system image. This means their policy should live in the vendor
      subdirectory of this project.
      
      Test: Device boots and appears to work
      Bug: 34135607
      Bug: 34170079
      Change-Id: I6613e43733e03d4a3d4726f849732d903e024016
      ac1a6d44
    • Josh Gao's avatar
      Revert "crash_dump: temporarily make permissive." · 3067af14
      Josh Gao authored
      This reverts commit 9cfe34b5.
      
      Bug: http://b/34978531
      Change-Id: I0702641c48fad273f16fa1a5f0e4483dfe408c05
      3067af14
    • Josh Gao's avatar
      crash_dump: allow read of APK files. · 437d1c05
      Josh Gao authored
      Fixes type=1400 audit(0.0:3901): avc: denied { open } for comm="crash_dump32" path="/data/app/com.chrome.canary-H8gGiCrQUqTZha2IybgrlA==/base.apk" dev="sda35" ino=1384523 scontext=u:r:crash_dump:s0:c522,c768 tcontext=u:object_r:apk_data_file:s0 tclass=file permissive=1
      
      Bug: http://b/34978531
      Change-Id: I0374145f71059c3f104055bf4e8dcf08b1101f2a
      437d1c05
  4. Feb 14, 2017
  5. Feb 13, 2017
  6. Feb 12, 2017
    • Nick Kralevich's avatar
      tracefs: avoid overly generic regexes · 4cae28d4
      Nick Kralevich authored
      On boot, Android runs restorecon on a number of virtual directories,
      such as /sys and /sys/kernel/debug, to ensure that the SELinux labels
      are correct. To avoid causing excessive boot time delays, the restorecon
      code aggressively prunes directories, to avoid recursing down directory
      trees which will never have a matching SELinux label.
      
      See:
      * https://android-review.googlesource.com/93401
      * https://android-review.googlesource.com/109103
      
      The key to this optimization is avoiding unnecessarily broad regular
      expressions in file_contexts. If an overly broad regex exists, the tree
      pruning code is ineffective, and the restorecon ends up visiting lots of
      unnecessary directories.
      
      The directory /sys/kernel/debug/tracing contains approximately 4500
      files normally, and on debuggable builds, this number can jump to over
      9000 files when the processing from wifi-events.rc occurs. For
      comparison, the entire /sys/kernel/debug tree (excluding
      /sys/kernel/debug/tracing) only contains approximately 8000 files. The
      regular expression "/sys/kernel(/debug)?/tracing/(.*)?" ends up matching
      a significant number of files, which impacts boot performance.
      
      Instead of using an overly broad regex, refine the regex so only the
      files needed have an entry in file_contexts. This list of files is
      essentially a duplicate of the entries in
      frameworks/native/cmds/atrace/atrace.rc .
      
      This change reduces the restorecon_recursive call for /sys/kernel/debug
      from approximately 260ms to 40ms, a boot time reduction of approximately
      220ms.
      
      Bug: 35248779
      Test: device boots, no SELinux denials, faster boot.
      Change-Id: I70f8af102762ec0180546b05fcf014c097135f3e
      4cae28d4
  7. Feb 11, 2017
    • Nick Kralevich's avatar
      Don't try to relabel tracing directory · 6ebcfe47
      Nick Kralevich authored
      Use the default filesystem label from genfs_contexts for the directory
      /sys/kernel/debug/tracing and /sys/kernel/tracing, instead of explicitly
      attempting to relabel it.
      
      There are three cases we need to consider:
      
      1) Old-style tracing functionality is on debugfs
      2) tracing functionality is on tracefs, but mounted under debugfs
      3) tracefs is mounted at /sys/kernel/tracing
      
      For #1, the label on /sys/kernel/debug/tracing will be debugfs, and all
      processes are allowed debugfs:dir search, so having the label be debugfs
      instead of debugfs_tracing will not result in any permission change.
      
      For #2, the label on /sys/kernel/debug/tracing will be debugfs_tracing,
      which is the same as it is today. The empty directory
      /sys/kernel/tracing wlll retain the sysfs label, avoiding the denial
      below.
      
      For #3, /sys/kernel/debug/tracing won't exist, and /sys/kernel/tracing
      will have the debugfs_tracing label, where processes are allowed search
      access.
      
      Addresses the following denial:
      
      avc:  denied  { associate } for  pid=1 comm="init" name="tracing"
      dev="sysfs" ino=95 scontext=u:object_r:debugfs_tracing:s0
      tcontext=u:object_r:sysfs:s0 tclass=filesystem permissive=0
      
      Bug: 31856701
      Bug: 35197529
      Test: no denials on boot
      Change-Id: I7233ea92c6987b8edfce9c2f1d77eb25c7df820f
      6ebcfe47
    • Pawin Vongmasa's avatar
      Sepolicy for OMX hal. · 5559d21a
      Pawin Vongmasa authored
      Bug: 31399200
      Test: Compiles
      Change-Id: Ifb347a985df5deb85426a54c435c4a9c0248cb57
      5559d21a
    • Treehugger Robot's avatar
      3651bae6
    • Craig Donner's avatar
      Allow untrusted apps to access VrManager. · 9051eaf3
      Craig Donner authored
      There is only a single systemapi at the moment that is callable, and it is
      protected by a signature/preinstalled permission.
      
      (cherry picked from commit I778864afc9d02f8b2bfcf6b92a9f975ee87c4724)
      
      Bug: 35059826,33297721
      Test: manually on a marlin
      Change-Id: I3789ce8238f5a52ead8f466dfa3045fbcef1958e
      9051eaf3
  8. Feb 10, 2017
Loading