Commit Graph

63190 Commits

Author SHA1 Message Date
Tom Cherry c581886eea logd: single std::mutex for locking log buffers and tracking readers
There are only three places where the log buffer lock is not already
held when the reader lock is taken:
1) In LogReader, when a new reader connects
2) In LogReader, when a misbehaving reader disconnects
3) LogReaderThread::ThreadFunction()

1) and 2) happen sufficiently rarely that there's no impact if they
additionally held a global lock.
3) is refactored in this CL.  Previously, it would do the below in a loop
  1) Lock the reader lock then wait on a condition variable
  2) Unlock the reader lock
  3) Lock the log buffer lock in LogBuffer::FlushTo()
  4) In each iteration in the LogBuffer::FlushTo() loop
    1) Lock then unlock the reader lock in FilterSecondPass()
    2) Unlock the log buffer lock to send the message, then re-lock it
  5) Unlock the log buffer lock when leaving LogBuffer::FlushTo()
If these locks are collapsed into a single lock, then this simplifies to:
  1) Lock the single lock then wait on a condition variable
  2) In each iteration in the LogBuffer::FlushTo() loop
    1) Unlock the single lock to send the message, then re-lock it

Collapsing both these locks into a single lock simplifes the code and
removes the overhead of acquiring the second lock, in the majority of
use cases where the first lock is already held.

Secondly, this lock will be a plain std::mutex instead of a RwLock.
RwLock's are appropriate when there is a substantial imbalance between
readers and writers and high contention, neither are true for logd.

Bug: 169736426
Test: logging unit tests
Change-Id: Ia511506f2d0935a5321c1b2f65569066f91ecb06
2020-10-07 15:00:49 -07:00
Tom Cherry 8401907adc Merge "Reland: "Remove logging symlinks from system/core/include"" 2020-10-07 15:11:10 +00:00
Treehugger Robot 3f452134da Merge "logd: fix bad test assumptions" 2020-10-07 03:12:49 +00:00
Treehugger Robot 4c7104ab2a Merge "Clarify `adb bugreport` failures on pre-N devices." 2020-10-07 00:59:39 +00:00
Treehugger Robot 52578dda5b Merge "Remove vts10 related configs" 2020-10-07 00:35:38 +00:00
Arve Hjønnevåg 3e7c3504a3 Merge "trusty: keymaster: set_attestation_key: Change wrapped key" 2020-10-06 23:31:38 +00:00
Tom Cherry 340afd38cb logd: fix bad test assumptions
SerializedLogChunk.three_logs assumes that log buffers are
zero-initialized, but they are not.  This causes test failures on
host.

Test: this test passes
Change-Id: I0dfa282bdc36eaa4e8e39d85c5227f717b45ec2a
2020-10-06 15:54:26 -07:00
Elliott Hughes f118cd95f1 Clarify `adb bugreport` failures on pre-N devices.
The error was meant to imply "without the filename" but (a) that wasn't
spelled out and (b) anyone who did just try the command would probably
be unpleasantly surprised by the massive amount of spam on their
terminal. So give them copy & paste instead.

(I did consider using their supplied filename, but since that's almost
certainly blah.zip, it seemed uncool to silently create a large text
file called "something.zip"!)

Bug: http://b/170225883
Test: untested for lack of a working pre-N device right now
Change-Id: I834939c963ca09927ccd4dc5ed8e88c65455838e
2020-10-06 13:53:38 -07:00
Dan Shi 67b7dd570f Remove vts10 related configs
Bug: 169582597
Test: build
Change-Id: I38e1e0f8e32b86ab14b905d040c1c62245a1a9e3
2020-10-06 13:52:44 -07:00
Xin Li 9602e3d31a Merge "DO NOT MERGE - Merge RP1A.201005.006" 2020-10-06 20:17:27 +00:00
Treehugger Robot 6d452d7e64 Merge "liblog: add pthread.h to vndk log/log.h" 2020-10-06 19:30:34 +00:00
Tom Cherry 1783f12106 Reland: "Remove logging symlinks from system/core/include"
Soong will instead directly include those paths.

Bug: 165825252
Test: treehugger
Change-Id: If1ee31ebf83715c0dfc4797305784fbfa7bd97db
2020-10-06 10:45:11 -07:00
Tom Cherry 824ef9ade6 liblog: add pthread.h to vndk log/log.h
Too many vendors assume that this is included, and it's not worth the
effort to clean up.

Bug: 165825252
Test: build
Change-Id: Ib99f0de4aac64134c21c0ee09f7ea576ebd0fe9e
2020-10-06 10:33:17 -07:00
The Android Open Source Project 7fd5f8d2bc DO NOT MERGE - Merge RP1A.201005.006
Bug: 168212094
Change-Id: I79a7517bce1c012eac2a2a7c1c2cffc5a3516eaa
Merged-In: Ia85067d4258bde4b875c832d6223db5dd26b8838
2020-10-06 04:30:21 +00:00
Tom Cherry 1bacb2c389 Merge "logd: add locks around ~SerializedFlushToState" 2020-10-05 22:22:52 +00:00
Tom Cherry 28b9eb5130 logd: add locks around ~SerializedFlushToState
This accesses shared resources in SerializedLogBuffer and therefore
requires a lock.

Bug: 169736426
Test: malloc_debug_system_tests
Change-Id: I807c65f4719481f933b4917a50f83f933b1929fb
2020-10-05 14:59:19 -07:00
Treehugger Robot bf426993db Merge "liblog: add unistd.h to vndk log/log.h" 2020-10-05 21:14:13 +00:00
Tom Cherry c274f9ff69 Merge "Revert "Remove logging symlinks from system/core/include"" 2020-10-05 19:26:17 +00:00
Christopher Ferris f30b12e6ad Merge "libunwindstack: Support signal frame CIEs." 2020-10-05 19:25:01 +00:00
Tom Cherry f94b88fa61 Revert "Remove logging symlinks from system/core/include"
Revert "Include system/core/liblog/include instead of using symlinks"

Revert submission 1428983-no-log-header-symlinks

Reason for revert: Build breaks
Reverted Changes:
I248a2f045:Include system/core/liblog/include instead of usin...
Ic189e0f59:Remove logging symlinks from system/core/include

Change-Id: Ia7d9efb29a5e83bb5d7c0e4a73f40c72c719bc62
2020-10-05 19:24:12 +00:00
Tom Cherry 136e4f6da6 liblog: add unistd.h to vndk log/log.h
Too many vendors assume that this is included, and it's not worth the
effort to clean up.

Bug: 165825252
Test: build
Change-Id: I42fb32be7e5e3201dfc5c58734e3ef5b9251faf1
2020-10-05 12:19:15 -07:00
Mohammad Islam f99f09eeda Merge "Activate encryption for /data/app-staging folder" 2020-10-05 16:01:59 +00:00
Tom Cherry f8a89dc3a2 Merge "Remove logging symlinks from system/core/include" 2020-10-05 15:26:51 +00:00
Tom Cherry 351586822f Merge "Delete include/private/android_filesystem_config.h" 2020-10-05 15:26:32 +00:00
Tom Cherry 167fbf534b Delete include/private/android_filesystem_config.h
This header should be accessed through libcutils.

Test: build
Change-Id: Ifb0ad3bc63ec5806d9c474a5d39721b2189c34de
2020-10-05 15:26:24 +00:00
Joseph Jang 012ee0ae0a Merge "fastboot: add new oem command for post wipe userdata" 2020-10-05 02:34:52 +00:00
Tianjie Xu 216ce0985f Merge changes from topic "revert-1433573-vab-libsnapshot-linkage-APIHERUSEB"
* changes:
  Revert "libsnapshot: Partially implement OpenSnapshotWriter."
  Revert "libsnapshot: Implement OnlineKernelSnapshotWriter::OpenReader."
2020-10-03 19:27:32 +00:00
Tianjie Xu 5aa52d91dd Revert "libsnapshot: Partially implement OpenSnapshotWriter."
Revert "Link to libsnapshot_cow everywhere libsnapshot is linked."

Revert submission 1433573-vab-libsnapshot-linkage

Reason for revert: b/169981170, update crash for droidfooders.
Reverted Changes:
Ie75bba98c:Link to libsnapshot_cow where libsnapshot is linke...
Ieedfadc55:libsnapshot: Partially implement OpenSnapshotWrite...
I28a5d4a88:Link to libsnapshot_cow everywhere libsnapshot is ...

Exempt-From-Owner-Approval: Revert to unblock dogfood
Change-Id: I0677df77672aca9fd54d94e009ac0be7c88a1a9d
2020-10-03 19:26:18 +00:00
Tianjie Xu ad583f2a16 Revert "libsnapshot: Implement OnlineKernelSnapshotWriter::OpenReader."
This reverts commit 39f250896a.

Reason for revert: b/169981170, update crash for droidfooders.

Change-Id: I6a3d096df3174596d36195bf59fa8fbc88c982d0
2020-10-03 07:26:29 +00:00
Wenhao Wang a560b76faa Merge "rpmb_dev: Fix RPMB_REQ_DATA_READ command" 2020-10-03 05:11:27 +00:00
Arve Hjønnevåg fe090a4686 trusty: keymaster: set_attestation_key: Change wrapped key
Remove WrappedPrivateKey and select wrapped vs plaintext key command
based on format instead.

Bug: 154033394
Test: send wrapped test key. Not yet accepted by trusty
Change-Id: I3b0a29be78f2a8e84ebd990713f66788256d8e3f
2020-10-02 16:55:16 -07:00
Ryan Prichard 9b8f545920 libunwindstack: Support signal frame CIEs.
Mark a CIE with a S in its augmentation string as signal frame.
This allows the code to properly handle signal frame data if none
of the signal frame pattern matchers work.

For a signal frame, DwarfSectionImpl<AddressType>::Eval needs to
continue the unwinding even if PC is zero. A zero PC means that the
program has crashed, and we should try to recover the real PC using the
return address on the stack or LR. This behavior is tested by
UnwindOffline.signal_{x86,x86_64}, which modify the libc.so files
so that the signal frame pattern matcher fails and the CIE/FDE
data is used instead.

Test: libunwindstack_test
Change-Id: I4655b070028fd984345311a5e743796f8c30ed36
2020-10-02 16:34:14 -07:00
Steven Moreland 754c6b2924 Merge "Adds license header" 2020-10-02 20:32:31 +00:00
Akilesh Kailash ecfbd8ef09 Merge "libcutils_static: Make ramdisk available for snapuserd daemon" 2020-10-02 20:20:43 +00:00
Akilesh Kailash e19df50b75 Merge "libsnapshot:snapuserd: Transitions for snapuserd" 2020-10-02 20:20:43 +00:00
Wenhao Wang 975491be09 rpmb_dev: Fix RPMB_REQ_DATA_READ command
Add ".check_key_programmed = true." for RPMB_REQ_DATA_READ such that
we can check whether the rpmb key has been programmed before executing
RPMB_REQ_DATA_READ command.

"JEDEC STANDARD Universal Flash Storage (UFS) Version 3.0" specifies
that data access before the key has been programmed should return
“Authentication Key not yet programmed” (0007h)..

Bug: 152901318
Test: Trusty storage tests
Change-Id: I4759fbce5f37234090a22a1d9dc3b38072f6ecaf
2020-10-02 12:32:30 -07:00
Akilesh Kailash 01085dc1b4 libsnapshot:snapuserd: Transitions for snapuserd
1: Create a static library which exposes APIs
to manage snapuserd daemon.

2: Snapuserd daemon creates communication socket.

Bug: 168258493
Test: cow_snapuserd_test tests all the library API
along with the IO path from dm-snapshot.

Signed-off-by: Akilesh Kailash <akailash@google.com>
Change-Id: I8aaedf89d75e793c145fdad248a4d88e0ce8348c
2020-10-02 18:41:11 +00:00
Dylan Katz 50ed92a7e0 Adds license header
Missed a review point made, added the license header to FuzzFormatTypes
Test: Compiled code

Signed-off-by: Dylan Katz <dylan.katz@leviathansecurity.com>
Change-Id: Ib8f32b802ec207d0483772c38a0a741e0dd1f151
2020-10-02 11:08:15 -07:00
Akilesh Kailash dfb1e08ab3 libcutils_static: Make ramdisk available for snapuserd daemon
Bug: 168258493
Test: cow_snapuserd_test
Signed-off-by: Akilesh Kailash <akailash@google.com>
Change-Id: I0fef4009e86ee93b7c2a752c7dba43914342d943
2020-10-02 15:49:16 +00:00
Christopher Ferris 483364a7ec Merge "Fix an error when overflows occur." 2020-10-02 07:51:20 +00:00
Christopher Ferris 9b6abd50d8 Fix an error when overflows occur.
Bug: 169657723

Test: Ran original test case and verified it does not leak.
Change-Id: I7a315bc3a2c380c207696ce06cc4aeb5b27937ac
2020-10-01 18:40:44 -07:00
Treehugger Robot 77dfd99beb Merge "Start tombstoned early in post-fs-data." 2020-10-02 01:20:35 +00:00
Josh Gao 81c94cdce6 Start tombstoned early in post-fs-data.
Bug: http://b/169659307
Test: manual
Change-Id: Ie19de31e7e2b6cd43402cfd3a2e9274728e9e6b4
2020-10-01 14:25:36 -07:00
Treehugger Robot d0642a373d Merge "Improve error message in debuggerd fallback handler." 2020-10-01 21:00:16 +00:00
Tom Cherry 7cfc944195 Merge "init: guarantee the ordering that actions are executed in" 2020-10-01 20:27:40 +00:00
Tom Cherry 34ee04762a init: guarantee the ordering that actions are executed in
The README.md states that this ordering is not guaranteed to give
flexibility for the future, however it's time to state that this
ordering is guaranteed, especially since:

1) We have a tests, EventTriggerOrder and
   EventTriggerOrderMultipleFiles, which have guaranteed this ordering
   since 2017.
2) We have users requesting and depending on this order

Also update some slightly out of date parts of the documentation:
1) We import /system/etc/init/hw/init.rc instead of /init.rc as the
   first import
2) We additionally import /system_ext/etc/init and /product/etc/init

Test: n/a
Change-Id: I6d7b8d9e52f0d52bee320d5074ebb74a537f9150
2020-10-01 11:07:43 -07:00
Tom Cherry 8ba33eb34b Merge "logd: drop logs about pruning and compression to VERBOSE" 2020-10-01 17:22:47 +00:00
josephjang 2906975399 fastboot: add new oem command for post wipe userdata
When Android userdata partition has been erased in fastbootd, call
oem specific API doOemSpecificErase() to wipe other userdata in
device.

If oem doesn't implement this specific API in fastboot_hal lib,
fastbootd will receive 'NOT_SUPPORTED' return status.

Bug: 169173873
Change-Id: I9b6a5a4aaed31d1168e633418b189f9bb6d34d01
2020-10-01 05:09:26 +00:00
Treehugger Robot b9795757e9 Merge "libsnapshot: Implement OnlineKernelSnapshotWriter::OpenReader." 2020-09-29 23:39:09 +00:00
Treehugger Robot 15f97700c2 Merge "libsnapshot: Partially implement OpenSnapshotWriter." 2020-09-29 21:52:07 +00:00