Commit Graph

10 Commits

Author SHA1 Message Date
Tom Cherry 721a5305e2 Merge "Revert "Don't use serialized propertyinfo"" 2017-12-18 22:02:35 +00:00
Tom Cherry 8be995b6ac Revert "Don't use serialized propertyinfo"
This reverts commit e149f3c1d7.

Reason for revert: This is ready to be enabled now.

Bug: 36001741

Change-Id: I418d3a498ff0712ce9a1857924c6d0039026a664
2017-12-14 01:58:49 +00:00
Robert Greenwalt 4ca6b87847 Merge "Don't use serialized propertyinfo" 2017-12-13 21:40:47 +00:00
Treehugger Robot 894e6f12ad Merge "Include what we use." 2017-12-13 21:32:49 +00:00
Tom Cherry e149f3c1d7 Don't use serialized propertyinfo
This needs more work before it can be enabled.

Bug: 36001741
Test: boot, check that we're using old style properties
Change-Id: I7032f4b4224758b187cf4e8a53fd8845466a5d4a
2017-12-13 02:48:23 -08:00
Dan Albert 3429c090f5 Include what we use.
Test: mma
Bug: None
Change-Id: I259468e829052bf27fab599ff951a5a2638d35aa
Exempt-From-Owner-Approval: trivial cleanup
2017-12-12 15:43:09 -08:00
Tom Cherry 79b724ca5a Add support for serialized property contexts
This adds support for reading a serialized
/dev/__properties__/property_info file, which contains a
serialized trie that maps property names to the SELinux context to
which they belong.

Performance wise on walleye, this change reduces the start up cost in
libc from ~3000us to ~430us.  On a benchmark that calls
__system_property_find() for each property set on the system, it
reduces the time per iteration from ~650us to ~292us.

Bug: 36001741
Test: Boot bullhead, walleye, run unit tests
Test: Benchmark initialization and lookup performance

Change-Id: I0887a3a7da88eb51b6d1bd494fa5bce593423599
2017-12-12 00:36:20 -08:00
Tom Cherry 8d366a81a3 Fix static classes in system properties
Previously, the functionality for mapping properties to contexts were
broken into a set of classes, each statically defined in
system_properties.cpp to prevent using new/malloc.  This is a mistake
however, since system property initialization happens before static
initialization, so it is possible for the Constructors of these
classes to clobber the initialized data.

This change fixes that by placing them in a Union and having that
Union have a no-op constructor.  The individual classes will be
initialized via placement new before they are used as is typically
done with classes in a union.

Test: boot bullhead
Change-Id: Ideb9d6ad8b6fc768811d8615d005cd4b8d134bce
2017-11-30 16:26:34 -08:00
Tom Cherry f76bbf5384 Remove some globals from system_properties
pa_size should be static to prop_area, so make it so.

__system_property_area__ was reused for various purposes, but
realistically is a deprecated symbol and this finally separates us
from it.

Bug: 36001741
Test: boot bullhead, system property unit tests
Change-Id: I39663cc3b613093fa4c728b21d8ba58754f8e105
2017-11-14 08:55:27 -08:00
Tom Cherry fd44b9f8d8 Split system_properties.cpp into its component pieces
system_properties.cpp is a little bit unmanageable in its current
form, and is overdue for a refactoring into more clearly defined
components.

Of particular interest, is creating of a Contexts interface that
handles mapping of system property name -> SEContext and its
associated prop_area, and creating two classes that implement the
current and legacy functionality.  This is needed as there will likely
be a third even newer way to do this mapping.

Bug: 36001741
Test: boot bullhead, system property unit tests
Change-Id: Ie75ec6fea1a95f90813918f54669d533e51327c6
2017-11-14 08:50:52 -08:00