[1/n] Android 14 port
This commit is contained in:
parent
34ba75d71f
commit
ebc4ea1e26
|
@ -1,4 +1,4 @@
|
||||||
From ea0f283eec1e7750351302dbc2009fa905cef375 Mon Sep 17 00:00:00 2001
|
From ee3be511ddfa2474c7c5890cea4725e908996b9f Mon Sep 17 00:00:00 2001
|
||||||
From: Pierre-Hugues Husson <phh@phh.me>
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
Date: Sat, 19 Feb 2022 08:20:25 -0500
|
Date: Sat, 19 Feb 2022 08:20:25 -0500
|
||||||
Subject: [PATCH] Add new mechanism to fake vendor props on a per-process basis
|
Subject: [PATCH] Add new mechanism to fake vendor props on a per-process basis
|
||||||
|
@ -132,5 +132,5 @@ index 1cb15c3df..40ff48bad 100644
|
||||||
|
|
||||||
static bool is_read_only(const char* name) {
|
static bool is_read_only(const char* name) {
|
||||||
--
|
--
|
||||||
2.40.0
|
2.41.0
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
From 5ae18168ff97d9e4eb66fc6dc8e087bd0ead8f31 Mon Sep 17 00:00:00 2001
|
From f8b9cb1d3cdf0274414bb7d100844d2707999558 Mon Sep 17 00:00:00 2001
|
||||||
From: Peter Cai <peter@typeblog.net>
|
From: Peter Cai <peter@typeblog.net>
|
||||||
Date: Wed, 24 Aug 2022 15:42:39 -0400
|
Date: Wed, 24 Aug 2022 15:42:39 -0400
|
||||||
Subject: [PATCH 2/4] APM: Optionally force-load audio policy for system-side
|
Subject: [PATCH 1/2] APM: Optionally force-load audio policy for system-side
|
||||||
bt audio HAL
|
bt audio HAL
|
||||||
|
|
||||||
Required to support our system-side bt audio implementation, i.e.
|
Required to support our system-side bt audio implementation, i.e.
|
||||||
|
@ -14,7 +14,7 @@ Change-Id: I279fff541a531f922f3fa55b8f14d00237db59ff
|
||||||
1 file changed, 25 insertions(+)
|
1 file changed, 25 insertions(+)
|
||||||
|
|
||||||
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
index d446e9667b..f5233f2a42 100644
|
index 3d5c1d2e42..881c188e4c 100644
|
||||||
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
@@ -25,6 +25,7 @@
|
@@ -25,6 +25,7 @@
|
||||||
|
@ -25,7 +25,7 @@ index d446e9667b..f5233f2a42 100644
|
||||||
#include <utils/Log.h>
|
#include <utils/Log.h>
|
||||||
#include <utils/StrongPointer.h>
|
#include <utils/StrongPointer.h>
|
||||||
#include <utils/Errors.h>
|
#include <utils/Errors.h>
|
||||||
@@ -890,6 +891,30 @@ status_t PolicySerializer::deserialize(const char *configFile, AudioPolicyConfig
|
@@ -885,6 +886,30 @@ status_t PolicySerializer::deserialize(const char *configFile, AudioPolicyConfig
|
||||||
if (status != NO_ERROR) {
|
if (status != NO_ERROR) {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
@ -57,5 +57,5 @@ index d446e9667b..f5233f2a42 100644
|
||||||
|
|
||||||
// Global Configuration
|
// Global Configuration
|
||||||
--
|
--
|
||||||
2.39.2
|
2.41.0
|
||||||
|
|
|
@ -1,232 +0,0 @@
|
||||||
From f9be27ef60cd4ccca6803458ff29ee7a2236769c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Cai <peter@typeblog.net>
|
|
||||||
Date: Thu, 18 Aug 2022 15:44:46 -0400
|
|
||||||
Subject: [PATCH 1/4] APM: Restore S, R and Q behavior respectively for
|
|
||||||
telephony audio
|
|
||||||
|
|
||||||
This conditionally reverts part of b2e5cb (T), 51c9cc (S) and afd4ce (R)
|
|
||||||
when the VNDK version is equal to or before S, R and Q respectively.
|
|
||||||
|
|
||||||
On R, commit afd4ce made it so that both HW and SW bridging go through
|
|
||||||
`createAudioPatch()`, which is broken on some devices such as on MTK Q
|
|
||||||
vendor, because their HAL do not support HW patching via the newer
|
|
||||||
`createAudioPatch()` method. Instead, the patching on Q was done through
|
|
||||||
`setOutputDevices()`.
|
|
||||||
|
|
||||||
On S, commit 51c9cc refactored the related code again such that HW
|
|
||||||
bridging for the Rx direction is essentially removed, replaced with SW
|
|
||||||
bridging through `startAudioSource()`. This is, again, broken on MTK R
|
|
||||||
vendor devices.
|
|
||||||
|
|
||||||
On T, commit b2e5cb applied the same SW bridging to the Tx direction.
|
|
||||||
|
|
||||||
All of these commits rely on assumptions that are not tested through
|
|
||||||
VTS and just presumed to be true. Although we can blame MTK for not
|
|
||||||
supporting all the possible cases in their HAL, it will not fix
|
|
||||||
anything, and really frameworks code should not depend on such untested
|
|
||||||
assumptions.
|
|
||||||
|
|
||||||
To work around said issues, we restore old behavior from S, R and Q
|
|
||||||
relying on the value of `ro.vndk.version`.
|
|
||||||
|
|
||||||
Change-Id: I56d36d2aef4319935cb88a3e4771b23c6d5b2145
|
|
||||||
---
|
|
||||||
.../managerdefault/AudioPolicyManager.cpp | 103 ++++++++++++++++--
|
|
||||||
.../managerdefault/AudioPolicyManager.h | 3 +
|
|
||||||
2 files changed, 96 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
|
||||||
index 4573382a06..c218c7ce2d 100644
|
|
||||||
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
|
||||||
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
|
||||||
@@ -675,6 +675,17 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
|
||||||
disconnectTelephonyAudioSource(mCallRxSourceClient);
|
|
||||||
disconnectTelephonyAudioSource(mCallTxSourceClient);
|
|
||||||
|
|
||||||
+ // release existing RX patch if any
|
|
||||||
+ if (mCallRxPatch != 0) {
|
|
||||||
+ releaseAudioPatchInternal(mCallRxPatch->getHandle());
|
|
||||||
+ mCallRxPatch.clear();
|
|
||||||
+ }
|
|
||||||
+ // release TX patch if any
|
|
||||||
+ if (mCallTxPatch != 0) {
|
|
||||||
+ releaseAudioPatchInternal(mCallTxPatch->getHandle());
|
|
||||||
+ mCallTxPatch.clear();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
auto telephonyRxModule =
|
|
||||||
mHwModules.getModuleForDeviceType(AUDIO_DEVICE_IN_TELEPHONY_RX, AUDIO_FORMAT_DEFAULT);
|
|
||||||
auto telephonyTxModule =
|
|
||||||
@@ -697,9 +708,20 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
|
||||||
ALOGE("%s() no telephony Tx and/or RX device", __func__);
|
|
||||||
return INVALID_OPERATION;
|
|
||||||
}
|
|
||||||
- // createAudioPatchInternal now supports both HW / SW bridging
|
|
||||||
- createRxPatch = true;
|
|
||||||
- createTxPatch = true;
|
|
||||||
+ if (property_get_int32("ro.vndk.version", 31) >= 30) {
|
|
||||||
+ // createAudioPatchInternal now supports both HW / SW bridging
|
|
||||||
+ createRxPatch = true;
|
|
||||||
+ createTxPatch = true;
|
|
||||||
+ } else {
|
|
||||||
+ // pre-R behavior: some devices before VNDK 30 do not support createAudioPatch correctly
|
|
||||||
+ // for HW bridging even though they declare support for it
|
|
||||||
+ // do not create a patch (aka Sw Bridging) if Primary HW module has declared supporting a
|
|
||||||
+ // route between telephony RX to Sink device and Source device to telephony TX
|
|
||||||
+ ALOGI("%s() Using pre-R behavior for createRxPatch and createTxPatch", __func__);
|
|
||||||
+ const auto &primaryModule = telephonyRxModule;
|
|
||||||
+ createRxPatch = !primaryModule->supportsPatch(rxSourceDevice, rxDevices.itemAt(0));
|
|
||||||
+ createTxPatch = !primaryModule->supportsPatch(txSourceDevice, txSinkDevice);
|
|
||||||
+ }
|
|
||||||
} else {
|
|
||||||
// If the RX device is on the primary HW module, then use legacy routing method for
|
|
||||||
// voice calls via setOutputDevice() on primary output.
|
|
||||||
@@ -716,7 +738,14 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
|
||||||
if (!createRxPatch) {
|
|
||||||
muteWaitMs = setOutputDevices(mPrimaryOutput, rxDevices, true, delayMs);
|
|
||||||
} else { // create RX path audio patch
|
|
||||||
- connectTelephonyRxAudioSource();
|
|
||||||
+ if (property_get_int32("ro.vndk.version", 31) >= 31) {
|
|
||||||
+ connectTelephonyRxAudioSource();
|
|
||||||
+ } else {
|
|
||||||
+ // pre-S behavior: some devices do not support SW bridging correctly when HW bridge is
|
|
||||||
+ // available through createAudioPatch(); startAudioSource() forces SW bridging.
|
|
||||||
+ ALOGI("%s() Using pre-S behavior to create HW Rx patch", __func__);
|
|
||||||
+ mCallRxPatch = createTelephonyPatch(true /*isRx*/, rxDevices.itemAt(0), delayMs);
|
|
||||||
+ }
|
|
||||||
// If the TX device is on the primary HW module but RX device is
|
|
||||||
// on other HW module, SinkMetaData of telephony input should handle it
|
|
||||||
// assuming the device uses audio HAL V5.0 and above
|
|
||||||
@@ -731,7 +760,12 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
|
||||||
closeActiveClients(activeDesc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- connectTelephonyTxAudioSource(txSourceDevice, txSinkDevice, delayMs);
|
|
||||||
+ if (property_get_int32("ro.vndk.version", 33) >= 33) {
|
|
||||||
+ connectTelephonyTxAudioSource(txSourceDevice, txSinkDevice, delayMs);
|
|
||||||
+ } else {
|
|
||||||
+ // pre-T behavior: hw bridging for tx too; skip the SwOutput
|
|
||||||
+ mCallTxPatch = createTelephonyPatch(false /*isRx*/, txSourceDevice, delayMs);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
if (waitMs != nullptr) {
|
|
||||||
*waitMs = muteWaitMs;
|
|
||||||
@@ -739,6 +773,36 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
|
||||||
return NO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
+sp<AudioPatch> AudioPolicyManager::createTelephonyPatch(
|
|
||||||
+ bool isRx, const sp<DeviceDescriptor> &device, uint32_t delayMs) {
|
|
||||||
+ PatchBuilder patchBuilder;
|
|
||||||
+
|
|
||||||
+ if (device == nullptr) {
|
|
||||||
+ return nullptr;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // @TODO: still ignoring the address, or not dealing platform with multiple telephony devices
|
|
||||||
+ if (isRx) {
|
|
||||||
+ patchBuilder.addSink(device).
|
|
||||||
+ addSource(mAvailableInputDevices.getDevice(
|
|
||||||
+ AUDIO_DEVICE_IN_TELEPHONY_RX, String8(), AUDIO_FORMAT_DEFAULT));
|
|
||||||
+ } else {
|
|
||||||
+ patchBuilder.addSource(device).
|
|
||||||
+ addSink(mAvailableOutputDevices.getDevice(
|
|
||||||
+ AUDIO_DEVICE_OUT_TELEPHONY_TX, String8(), AUDIO_FORMAT_DEFAULT));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ audio_patch_handle_t patchHandle = AUDIO_PATCH_HANDLE_NONE;
|
|
||||||
+ status_t status =
|
|
||||||
+ createAudioPatchInternal(patchBuilder.patch(), &patchHandle, mUidCached, delayMs, nullptr);
|
|
||||||
+ ssize_t index = mAudioPatches.indexOfKey(patchHandle);
|
|
||||||
+ if (status != NO_ERROR || index < 0) {
|
|
||||||
+ ALOGW("%s() error %d creating %s audio patch", __func__, status, isRx ? "RX" : "TX");
|
|
||||||
+ return nullptr;
|
|
||||||
+ }
|
|
||||||
+ return mAudioPatches.valueAt(index);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
bool AudioPolicyManager::isDeviceOfModule(
|
|
||||||
const sp<DeviceDescriptor>& devDesc, const char *moduleId) const {
|
|
||||||
sp<HwModule> module = mHwModules.getModuleFromName(moduleId);
|
|
||||||
@@ -4541,6 +4605,7 @@ status_t AudioPolicyManager::createAudioPatchInternal(const struct audio_patch *
|
|
||||||
// in config XML to reach the sink so that is can be declared as available.
|
|
||||||
audio_io_handle_t output = AUDIO_IO_HANDLE_NONE;
|
|
||||||
sp<SwAudioOutputDescriptor> outputDesc;
|
|
||||||
+ if (sourceDesc != nullptr) { // Ignore indentation, we don't want to cuase huge conflicts...
|
|
||||||
if (!sourceDesc->isInternal()) {
|
|
||||||
// take care of dynamic routing for SwOutput selection,
|
|
||||||
audio_attributes_t attributes = sourceDesc->attributes();
|
|
||||||
@@ -4586,33 +4651,51 @@ status_t AudioPolicyManager::createAudioPatchInternal(const struct audio_patch *
|
|
||||||
outputDesc = mOutputs.valueFor(output);
|
|
||||||
if (outputDesc->isDuplicated()) {
|
|
||||||
ALOGV("%s output for device %s is duplicated",
|
|
||||||
- __func__, sinkDevice->toString().c_str());
|
|
||||||
+ __func__, sinkDevice->toString().c_str());
|
|
||||||
return INVALID_OPERATION;
|
|
||||||
}
|
|
||||||
sourceDesc->setSwOutput(outputDesc, /* closeOutput= */ false);
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
// create a software bridge in PatchPanel if:
|
|
||||||
// - source and sink devices are on different HW modules OR
|
|
||||||
// - audio HAL version is < 3.0
|
|
||||||
// - audio HAL version is >= 3.0 but no route has been declared between devices
|
|
||||||
- // - called from startAudioSource (aka sourceDesc is not internal) and source device
|
|
||||||
+ // - called from startAudioSource (aka sourceDesc is neither null nor internal) and source device
|
|
||||||
// does not have a gain controller
|
|
||||||
if (!srcDevice->hasSameHwModuleAs(sinkDevice) ||
|
|
||||||
(srcDevice->getModuleVersionMajor() < 3) ||
|
|
||||||
!srcDevice->getModule()->supportsPatch(srcDevice, sinkDevice) ||
|
|
||||||
- (!sourceDesc->isInternal() &&
|
|
||||||
+ ((sourceDesc != nullptr && !sourceDesc->isInternal()) &&
|
|
||||||
srcDevice->getAudioPort()->getGains().size() == 0)) {
|
|
||||||
// support only one sink device for now to simplify output selection logic
|
|
||||||
if (patch->num_sinks > 1) {
|
|
||||||
return INVALID_OPERATION;
|
|
||||||
}
|
|
||||||
- sourceDesc->setUseSwBridge();
|
|
||||||
+ if (sourceDesc == nullptr) {
|
|
||||||
+ SortedVector<audio_io_handle_t> outputs =
|
|
||||||
+ getOutputsForDevices(DeviceVector(sinkDevice), mOutputs);
|
|
||||||
+ // if the sink device is reachable via an opened output stream, request to
|
|
||||||
+ // go via this output stream by adding a second source to the patch
|
|
||||||
+ // description
|
|
||||||
+ output = selectOutput(outputs);
|
|
||||||
+ if (output != AUDIO_IO_HANDLE_NONE) {
|
|
||||||
+ outputDesc = mOutputs.valueFor(output);
|
|
||||||
+ if (outputDesc->isDuplicated()) {
|
|
||||||
+ ALOGV("%s output for device %s is duplicated",
|
|
||||||
+ __FUNCTION__, sinkDevice->toString().c_str());
|
|
||||||
+ return INVALID_OPERATION;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ sourceDesc->setUseSwBridge();
|
|
||||||
+ }
|
|
||||||
if (outputDesc != nullptr) {
|
|
||||||
audio_port_config srcMixPortConfig = {};
|
|
||||||
outputDesc->toAudioPortConfig(&srcMixPortConfig, nullptr);
|
|
||||||
// for volume control, we may need a valid stream
|
|
||||||
srcMixPortConfig.ext.mix.usecase.stream =
|
|
||||||
- (!sourceDesc->isInternal() || isCallTxAudioSource(sourceDesc)) ?
|
|
||||||
+ ((sourceDesc != nullptr && !sourceDesc->isInternal()) || isCallTxAudioSource(sourceDesc)) ?
|
|
||||||
mEngine->getStreamTypeForAttributes(sourceDesc->attributes()) :
|
|
||||||
AUDIO_STREAM_PATCH;
|
|
||||||
patchBuilder.addSource(srcMixPortConfig);
|
|
||||||
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
|
||||||
index a69e08871b..f8762016db 100644
|
|
||||||
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
|
||||||
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
|
||||||
@@ -944,6 +944,9 @@ protected:
|
|
||||||
|
|
||||||
SoundTriggerSessionCollection mSoundTriggerSessions;
|
|
||||||
|
|
||||||
+ sp<AudioPatch> mCallTxPatch;
|
|
||||||
+ sp<AudioPatch> mCallRxPatch;
|
|
||||||
+
|
|
||||||
HwAudioOutputCollection mHwOutputs;
|
|
||||||
SourceClientCollection mAudioSources;
|
|
||||||
|
|
||||||
--
|
|
||||||
2.39.2
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
From d11e204968cbf01851042f03fe2a12aabbe84a93 Mon Sep 17 00:00:00 2001
|
From d60a1b5fc58a7cc84b48c554cb2cffaeff14d86e Mon Sep 17 00:00:00 2001
|
||||||
From: Peter Cai <peter@typeblog.net>
|
From: Peter Cai <peter@typeblog.net>
|
||||||
Date: Thu, 25 Aug 2022 13:30:29 -0400
|
Date: Thu, 25 Aug 2022 13:30:29 -0400
|
||||||
Subject: [PATCH 3/4] APM: Remove A2DP audio ports from the primary HAL
|
Subject: [PATCH 2/2] APM: Remove A2DP audio ports from the primary HAL
|
||||||
|
|
||||||
These ports defined in the primary HAL are intended for A2DP offloading,
|
These ports defined in the primary HAL are intended for A2DP offloading,
|
||||||
however they do not work in general on GSIs, and will interfere with
|
however they do not work in general on GSIs, and will interfere with
|
||||||
|
@ -16,7 +16,7 @@ Change-Id: I3305594a17285da113167b419543543f0ef71122
|
||||||
1 file changed, 22 insertions(+), 4 deletions(-)
|
1 file changed, 22 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
index f5233f2a42..6630d06f6d 100644
|
index 881c188e4c..8519cfdc04 100644
|
||||||
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
@@ -26,6 +26,7 @@
|
@@ -26,6 +26,7 @@
|
||||||
|
@ -75,5 +75,5 @@ index f5233f2a42..6630d06f6d 100644
|
||||||
|
|
||||||
RouteTraits::Collection routes;
|
RouteTraits::Collection routes;
|
||||||
--
|
--
|
||||||
2.39.2
|
2.41.0
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
From 628ff965d6ade74843a58cab6fe58069ef0ec3ad Mon Sep 17 00:00:00 2001
|
|
||||||
From: Emilian Peev <epeev@google.com>
|
|
||||||
Date: Fri, 5 Aug 2022 17:28:06 -0700
|
|
||||||
Subject: [PATCH 4/4] Camera: Avoid unnecessary close of buffer acquire fence
|
|
||||||
fds
|
|
||||||
|
|
||||||
According to the gralloc lock documentation:
|
|
||||||
The ownership of acquireFence is always transferred to the callee, even
|
|
||||||
on errors.
|
|
||||||
|
|
||||||
Bug: 241455881
|
|
||||||
Test: Manual using camera application
|
|
||||||
Change-Id: Ieec34b54aaa7f0d773eccb593c3daaa3e41bae0b
|
|
||||||
Merged-In: Ieec34b54aaa7f0d773eccb593c3daaa3e41bae0b
|
|
||||||
---
|
|
||||||
.../camera/libcameraservice/device3/Camera3OutputStream.cpp | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
|
|
||||||
index 396104c4fd..c725aadb79 100644
|
|
||||||
--- a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
|
|
||||||
+++ b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
|
|
||||||
@@ -331,7 +331,7 @@ status_t Camera3OutputStream::fixUpHidlJpegBlobHeader(ANativeWindowBuffer* anwBu
|
|
||||||
status_t res =
|
|
||||||
gbLocker.lockAsync(
|
|
||||||
GraphicBuffer::USAGE_SW_READ_OFTEN | GraphicBuffer::USAGE_SW_WRITE_RARELY,
|
|
||||||
- &mapped, fenceFd.get());
|
|
||||||
+ &mapped, fenceFd.release());
|
|
||||||
if (res != OK) {
|
|
||||||
ALOGE("%s: Failed to lock the buffer: %s (%d)", __FUNCTION__, strerror(-res), res);
|
|
||||||
return res;
|
|
||||||
@@ -1327,7 +1327,7 @@ void Camera3OutputStream::dumpImageToDisk(nsecs_t timestamp,
|
|
||||||
void* mapped = nullptr;
|
|
||||||
base::unique_fd fenceFd(dup(fence));
|
|
||||||
status_t res = graphicBuffer->lockAsync(GraphicBuffer::USAGE_SW_READ_OFTEN, &mapped,
|
|
||||||
- fenceFd.get());
|
|
||||||
+ fenceFd.release());
|
|
||||||
if (res != OK) {
|
|
||||||
ALOGE("%s: Failed to lock the buffer: %s (%d)", __FUNCTION__, strerror(-res), res);
|
|
||||||
return;
|
|
||||||
--
|
|
||||||
2.39.2
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
From 5e94fc70ba1963ed33eb6633702cce706b6814d1 Mon Sep 17 00:00:00 2001
|
From c25e4bfafc3b0b9f44c9cd2b9fed590299480f71 Mon Sep 17 00:00:00 2001
|
||||||
From: Peter Cai <peter@typeblog.net>
|
From: Peter Cai <peter@typeblog.net>
|
||||||
Date: Tue, 12 Oct 2021 21:37:22 -0400
|
Date: Tue, 12 Oct 2021 21:37:22 -0400
|
||||||
Subject: [PATCH 1/6] PackageParser: support glob matching for properties
|
Subject: [PATCH 1/4] PackageParser: support glob matching for properties
|
||||||
|
|
||||||
Needed to make phh's vendor overlays work
|
Needed to make phh's vendor overlays work
|
||||||
---
|
---
|
||||||
|
@ -9,7 +9,7 @@ Needed to make phh's vendor overlays work
|
||||||
1 file changed, 10 insertions(+), 2 deletions(-)
|
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
|
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
|
||||||
index c15b3e0b80c3..05bb843c0c4d 100644
|
index 048289f56a0c..0d88d7ab97a4 100644
|
||||||
--- a/core/java/android/content/pm/PackageParser.java
|
--- a/core/java/android/content/pm/PackageParser.java
|
||||||
+++ b/core/java/android/content/pm/PackageParser.java
|
+++ b/core/java/android/content/pm/PackageParser.java
|
||||||
@@ -2545,8 +2545,16 @@ public class PackageParser {
|
@@ -2545,8 +2545,16 @@ public class PackageParser {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
From 3199a7f449d08acf306aafb180ccbcbacd993616 Mon Sep 17 00:00:00 2001
|
From 540857efdf49ba24121970d2b836eb38ab7e7b32 Mon Sep 17 00:00:00 2001
|
||||||
From: Danny Lin <danny@kdrag0n.dev>
|
From: Danny Lin <danny@kdrag0n.dev>
|
||||||
Date: Sat, 16 Oct 2021 05:27:57 -0700
|
Date: Sat, 16 Oct 2021 05:27:57 -0700
|
||||||
Subject: [PATCH 2/6] Add support for app signature spoofing
|
Subject: [PATCH 2/4] Add support for app signature spoofing
|
||||||
|
|
||||||
This is needed by microG GmsCore to pretend to be the official Google
|
This is needed by microG GmsCore to pretend to be the official Google
|
||||||
Play Services package, because client apps check the package signature
|
Play Services package, because client apps check the package signature
|
||||||
|
@ -38,18 +38,18 @@ Change-Id: Ied7d6ce0b83a2d2345c3abba0429998d86494a88
|
||||||
4 files changed, 56 insertions(+), 3 deletions(-)
|
4 files changed, 56 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
diff --git a/core/api/current.txt b/core/api/current.txt
|
diff --git a/core/api/current.txt b/core/api/current.txt
|
||||||
index 487e57d114c9..04e69741b9fd 100644
|
index 288ab479c0fb..2124d89c6e6f 100644
|
||||||
--- a/core/api/current.txt
|
--- a/core/api/current.txt
|
||||||
+++ b/core/api/current.txt
|
+++ b/core/api/current.txt
|
||||||
@@ -87,6 +87,7 @@ package android {
|
@@ -95,6 +95,7 @@ package android {
|
||||||
field public static final String DUMP = "android.permission.DUMP";
|
field public static final String EXECUTE_APP_ACTION = "android.permission.EXECUTE_APP_ACTION";
|
||||||
field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR";
|
field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR";
|
||||||
field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST";
|
field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST";
|
||||||
+ field public static final String FAKE_PACKAGE_SIGNATURE = "android.permission.FAKE_PACKAGE_SIGNATURE";
|
+ field public static final String FAKE_PACKAGE_SIGNATURE = "android.permission.FAKE_PACKAGE_SIGNATURE";
|
||||||
field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE";
|
field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE";
|
||||||
field public static final String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS";
|
field public static final String FOREGROUND_SERVICE_CAMERA = "android.permission.FOREGROUND_SERVICE_CAMERA";
|
||||||
field public static final String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED";
|
field public static final String FOREGROUND_SERVICE_CONNECTED_DEVICE = "android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE";
|
||||||
@@ -222,6 +223,7 @@ package android {
|
@@ -326,6 +327,7 @@ package android {
|
||||||
field public static final String CALL_LOG = "android.permission-group.CALL_LOG";
|
field public static final String CALL_LOG = "android.permission-group.CALL_LOG";
|
||||||
field public static final String CAMERA = "android.permission-group.CAMERA";
|
field public static final String CAMERA = "android.permission-group.CAMERA";
|
||||||
field public static final String CONTACTS = "android.permission-group.CONTACTS";
|
field public static final String CONTACTS = "android.permission-group.CONTACTS";
|
||||||
|
@ -58,10 +58,10 @@ index 487e57d114c9..04e69741b9fd 100644
|
||||||
field public static final String MICROPHONE = "android.permission-group.MICROPHONE";
|
field public static final String MICROPHONE = "android.permission-group.MICROPHONE";
|
||||||
field public static final String NEARBY_DEVICES = "android.permission-group.NEARBY_DEVICES";
|
field public static final String NEARBY_DEVICES = "android.permission-group.NEARBY_DEVICES";
|
||||||
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
|
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
|
||||||
index 0e95e30a99b8..a456ac6b7129 100644
|
index 2f9f6ae3f3c4..c4cde374ce58 100644
|
||||||
--- a/core/res/AndroidManifest.xml
|
--- a/core/res/AndroidManifest.xml
|
||||||
+++ b/core/res/AndroidManifest.xml
|
+++ b/core/res/AndroidManifest.xml
|
||||||
@@ -3569,6 +3569,21 @@
|
@@ -4251,6 +4251,21 @@
|
||||||
android:description="@string/permdesc_getPackageSize"
|
android:description="@string/permdesc_getPackageSize"
|
||||||
android:protectionLevel="normal" />
|
android:protectionLevel="normal" />
|
||||||
|
|
||||||
|
@ -84,10 +84,10 @@ index 0e95e30a99b8..a456ac6b7129 100644
|
||||||
{@link android.content.pm.PackageManager#addPackageToPreferred}
|
{@link android.content.pm.PackageManager#addPackageToPreferred}
|
||||||
for details. -->
|
for details. -->
|
||||||
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
|
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
|
||||||
index 2091c0502b6f..6888edcf7d3c 100644
|
index a5b2b853fddd..f8b48c55ce21 100644
|
||||||
--- a/core/res/res/values/strings.xml
|
--- a/core/res/res/values/strings.xml
|
||||||
+++ b/core/res/res/values/strings.xml
|
+++ b/core/res/res/values/strings.xml
|
||||||
@@ -982,6 +982,18 @@
|
@@ -991,6 +991,18 @@
|
||||||
|
|
||||||
<!-- Permissions -->
|
<!-- Permissions -->
|
||||||
|
|
||||||
|
@ -107,10 +107,10 @@ index 2091c0502b6f..6888edcf7d3c 100644
|
||||||
<string name="permlab_statusBar">disable or modify status bar</string>
|
<string name="permlab_statusBar">disable or modify status bar</string>
|
||||||
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
||||||
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
|
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
|
||||||
index 46b7460dff1b..40549962436f 100644
|
index 78f1fa60b69f..fb2f7da97cda 100644
|
||||||
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
|
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
|
||||||
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
|
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
|
||||||
@@ -1603,6 +1603,29 @@ public class ComputerEngine implements Computer {
|
@@ -1450,6 +1450,29 @@ public class ComputerEngine implements Computer {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,21 +140,21 @@ index 46b7460dff1b..40549962436f 100644
|
||||||
public final PackageInfo generatePackageInfo(PackageStateInternal ps,
|
public final PackageInfo generatePackageInfo(PackageStateInternal ps,
|
||||||
@PackageManager.PackageInfoFlagsBits long flags, int userId) {
|
@PackageManager.PackageInfoFlagsBits long flags, int userId) {
|
||||||
if (!mUserManager.exists(userId)) return null;
|
if (!mUserManager.exists(userId)) return null;
|
||||||
@@ -1632,13 +1655,14 @@ public class ComputerEngine implements Computer {
|
@@ -1483,13 +1506,14 @@ public class ComputerEngine implements Computer {
|
||||||
final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY
|
|| ArrayUtils.isEmpty(p.getPermissions())) ? Collections.emptySet()
|
||||||
: mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.getAppId()));
|
: mPermissionManager.getInstalledPermissions(ps.getPackageName());
|
||||||
// Compute granted permissions only if package has requested permissions
|
// Compute granted permissions only if package has requested permissions
|
||||||
- final Set<String> permissions = ((flags & PackageManager.GET_PERMISSIONS) == 0
|
- final Set<String> grantedPermissions = ((flags & PackageManager.GET_PERMISSIONS) == 0
|
||||||
+ final Set<String> permissions = (((flags & PackageManager.GET_PERMISSIONS) == 0
|
+ final Set<String> grantedPermissions = (((flags & PackageManager.GET_PERMISSIONS) == 0
|
||||||
+ && !requestsFakeSignature(p))
|
+ && !requestsFakeSignature(p))
|
||||||
|| ArrayUtils.isEmpty(p.getRequestedPermissions())) ? Collections.emptySet()
|
|| ArrayUtils.isEmpty(p.getRequestedPermissions())) ? Collections.emptySet()
|
||||||
: mPermissionManager.getGrantedPermissions(ps.getPackageName(), userId);
|
: mPermissionManager.getGrantedPermissions(ps.getPackageName(), userId);
|
||||||
|
|
||||||
- PackageInfo packageInfo = PackageInfoUtils.generate(p, gids, flags,
|
- PackageInfo packageInfo = PackageInfoUtils.generate(p, gids, flags,
|
||||||
+ PackageInfo packageInfo = mayFakeSignature(p, PackageInfoUtils.generate(p, gids, flags,
|
+ PackageInfo packageInfo = mayFakeSignature(p, PackageInfoUtils.generate(p, gids, flags,
|
||||||
state.getFirstInstallTime(), ps.getLastUpdateTime(), permissions, state, userId,
|
state.getFirstInstallTimeMillis(), ps.getLastUpdateTime(), installedPermissions,
|
||||||
- ps);
|
- grantedPermissions, state, userId, ps);
|
||||||
+ ps), permissions);
|
+ grantedPermissions, state, userId, ps), grantedPermissions);
|
||||||
|
|
||||||
if (packageInfo == null) {
|
if (packageInfo == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
From 734839b7918f93cb746ebbe82179a9cbcf165424 Mon Sep 17 00:00:00 2001
|
From 148fe28e381f444f7d06ea611dbd82c1e1ae8573 Mon Sep 17 00:00:00 2001
|
||||||
From: Peter Cai <peter@typeblog.net>
|
From: Peter Cai <peter@typeblog.net>
|
||||||
Date: Fri, 2 Sep 2022 21:36:06 -0400
|
Date: Fri, 2 Sep 2022 21:36:06 -0400
|
||||||
Subject: [PATCH 3/6] FrameworkParsingPackageUtils: Add glob matching support
|
Subject: [PATCH 3/4] FrameworkParsingPackageUtils: Add glob matching support
|
||||||
for properties
|
for properties
|
||||||
|
|
||||||
This is now required in addition to the one in PackageParser in order
|
This is now required in addition to the one in PackageParser in order
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
From af0cbe50e889694dc72ab84c4e1af816bdd199b9 Mon Sep 17 00:00:00 2001
|
From 00b72ce36c74f294e9823a41c0f50f73d435b1dd Mon Sep 17 00:00:00 2001
|
||||||
From: Oliver Scott <olivercscott@gmail.com>
|
From: Oliver Scott <olivercscott@gmail.com>
|
||||||
Date: Thu, 8 Jul 2021 10:41:43 -0400
|
Date: Thu, 8 Jul 2021 10:41:43 -0400
|
||||||
Subject: [PATCH 4/6] Global VPN feature [1/2]
|
Subject: [PATCH 4/4] Global VPN feature [1/2]
|
||||||
|
|
||||||
* Modify existing VPN user range functions to conditionally have traffic
|
* Modify existing VPN user range functions to conditionally have traffic
|
||||||
from all users pass through the global VPN.
|
from all users pass through the global VPN.
|
||||||
|
@ -28,10 +28,10 @@ Signed-off-by: Mohammad Hasan Keramat J <ikeramat@protonmail.com>
|
||||||
3 files changed, 46 insertions(+), 5 deletions(-)
|
3 files changed, 46 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
|
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
|
||||||
index 8d8379831e87..bd6cc1d4d7bf 100644
|
index d695c0cb3760..5c705aa14d44 100644
|
||||||
--- a/core/java/android/provider/Settings.java
|
--- a/core/java/android/provider/Settings.java
|
||||||
+++ b/core/java/android/provider/Settings.java
|
+++ b/core/java/android/provider/Settings.java
|
||||||
@@ -16060,6 +16060,12 @@ public final class Settings {
|
@@ -16734,6 +16734,12 @@ public final class Settings {
|
||||||
CLOCKWORK_HOME_READY,
|
CLOCKWORK_HOME_READY,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ index 8d8379831e87..bd6cc1d4d7bf 100644
|
||||||
* Keys we no longer back up under the current schema, but want to continue to
|
* Keys we no longer back up under the current schema, but want to continue to
|
||||||
* process when restoring historical backup datasets.
|
* process when restoring historical backup datasets.
|
||||||
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
|
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
|
||||||
index ba947149d287..e5eb04c7818d 100644
|
index 03656f000c07..fddf8167beb5 100644
|
||||||
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
|
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
|
||||||
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
|
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
|
||||||
@@ -39,6 +39,7 @@ import android.os.Handler;
|
@@ -39,6 +39,7 @@ import android.os.Handler;
|
||||||
|
@ -56,7 +56,7 @@ index ba947149d287..e5eb04c7818d 100644
|
||||||
import android.security.KeyChain;
|
import android.security.KeyChain;
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -332,8 +333,13 @@ public class SecurityControllerImpl implements SecurityController {
|
@@ -338,8 +339,13 @@ public class SecurityControllerImpl implements SecurityController {
|
||||||
@Override
|
@Override
|
||||||
public void onUserSwitched(int newUserId) {
|
public void onUserSwitched(int newUserId) {
|
||||||
mCurrentUserId = newUserId;
|
mCurrentUserId = newUserId;
|
||||||
|
@ -72,10 +72,10 @@ index ba947149d287..e5eb04c7818d 100644
|
||||||
mVpnUserId = newUserInfo.restrictedProfileParentId;
|
mVpnUserId = newUserInfo.restrictedProfileParentId;
|
||||||
} else {
|
} else {
|
||||||
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
|
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
|
||||||
index 8510de4ef201..7c02924a711d 100644
|
index e85eee817d29..2a731532b8d2 100644
|
||||||
--- a/services/core/java/com/android/server/connectivity/Vpn.java
|
--- a/services/core/java/com/android/server/connectivity/Vpn.java
|
||||||
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
|
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
|
||||||
@@ -691,6 +691,15 @@ public class Vpn {
|
@@ -909,6 +909,15 @@ public class Vpn {
|
||||||
return mAlwaysOn;
|
return mAlwaysOn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ index 8510de4ef201..7c02924a711d 100644
|
||||||
/**
|
/**
|
||||||
* Checks if a VPN app supports always-on mode.
|
* Checks if a VPN app supports always-on mode.
|
||||||
*
|
*
|
||||||
@@ -1559,6 +1568,7 @@ public class Vpn {
|
@@ -1855,6 +1864,7 @@ public class Vpn {
|
||||||
try {
|
try {
|
||||||
// Restricted users are not allowed to create VPNs, they are tied to Owner
|
// Restricted users are not allowed to create VPNs, they are tied to Owner
|
||||||
enforceNotRestrictedUser();
|
enforceNotRestrictedUser();
|
||||||
|
@ -99,7 +99,7 @@ index 8510de4ef201..7c02924a711d 100644
|
||||||
|
|
||||||
final PackageManager packageManager = mUserIdContext.getPackageManager();
|
final PackageManager packageManager = mUserIdContext.getPackageManager();
|
||||||
if (packageManager == null) {
|
if (packageManager == null) {
|
||||||
@@ -1720,7 +1730,7 @@ public class Vpn {
|
@@ -2007,7 +2017,7 @@ public class Vpn {
|
||||||
addUserToRanges(ranges, userId, allowedApplications, disallowedApplications);
|
addUserToRanges(ranges, userId, allowedApplications, disallowedApplications);
|
||||||
|
|
||||||
// If the user can have restricted profiles, assign all its restricted profiles too
|
// If the user can have restricted profiles, assign all its restricted profiles too
|
||||||
|
@ -108,7 +108,7 @@ index 8510de4ef201..7c02924a711d 100644
|
||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
List<UserInfo> users;
|
List<UserInfo> users;
|
||||||
try {
|
try {
|
||||||
@@ -1729,7 +1739,8 @@ public class Vpn {
|
@@ -2016,7 +2026,8 @@ public class Vpn {
|
||||||
Binder.restoreCallingIdentity(token);
|
Binder.restoreCallingIdentity(token);
|
||||||
}
|
}
|
||||||
for (UserInfo user : users) {
|
for (UserInfo user : users) {
|
||||||
|
@ -118,7 +118,7 @@ index 8510de4ef201..7c02924a711d 100644
|
||||||
addUserToRanges(ranges, user.id, allowedApplications, disallowedApplications);
|
addUserToRanges(ranges, user.id, allowedApplications, disallowedApplications);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1810,7 +1821,8 @@ public class Vpn {
|
@@ -2097,7 +2108,8 @@ public class Vpn {
|
||||||
public void onUserAdded(int userId) {
|
public void onUserAdded(int userId) {
|
||||||
// If the user is restricted tie them to the parent user's VPN
|
// If the user is restricted tie them to the parent user's VPN
|
||||||
UserInfo user = mUserManager.getUserInfo(userId);
|
UserInfo user = mUserManager.getUserInfo(userId);
|
||||||
|
@ -128,7 +128,7 @@ index 8510de4ef201..7c02924a711d 100644
|
||||||
synchronized(Vpn.this) {
|
synchronized(Vpn.this) {
|
||||||
final Set<Range<Integer>> existingRanges = mNetworkCapabilities.getUids();
|
final Set<Range<Integer>> existingRanges = mNetworkCapabilities.getUids();
|
||||||
if (existingRanges != null) {
|
if (existingRanges != null) {
|
||||||
@@ -1839,7 +1851,8 @@ public class Vpn {
|
@@ -2126,7 +2138,8 @@ public class Vpn {
|
||||||
public void onUserRemoved(int userId) {
|
public void onUserRemoved(int userId) {
|
||||||
// clean up if restricted
|
// clean up if restricted
|
||||||
UserInfo user = mUserManager.getUserInfo(userId);
|
UserInfo user = mUserManager.getUserInfo(userId);
|
||||||
|
@ -138,7 +138,7 @@ index 8510de4ef201..7c02924a711d 100644
|
||||||
synchronized(Vpn.this) {
|
synchronized(Vpn.this) {
|
||||||
final Set<Range<Integer>> existingRanges = mNetworkCapabilities.getUids();
|
final Set<Range<Integer>> existingRanges = mNetworkCapabilities.getUids();
|
||||||
if (existingRanges != null) {
|
if (existingRanges != null) {
|
||||||
@@ -2278,6 +2291,17 @@ public class Vpn {
|
@@ -2565,6 +2578,17 @@ public class Vpn {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ index 8510de4ef201..7c02924a711d 100644
|
||||||
/**
|
/**
|
||||||
* Start legacy VPN, controlling native daemons as needed. Creates a
|
* Start legacy VPN, controlling native daemons as needed. Creates a
|
||||||
* secondary thread to perform connection work, returning quickly.
|
* secondary thread to perform connection work, returning quickly.
|
||||||
@@ -2362,6 +2386,7 @@ public class Vpn {
|
@@ -2649,6 +2673,7 @@ public class Vpn {
|
||||||
new UserHandle(mUserId))) {
|
new UserHandle(mUserId))) {
|
||||||
throw new SecurityException("Restricted users cannot establish VPNs");
|
throw new SecurityException("Restricted users cannot establish VPNs");
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,7 @@ index 8510de4ef201..7c02924a711d 100644
|
||||||
|
|
||||||
final RouteInfo ipv4DefaultRoute = findIPv4DefaultRoute(egress);
|
final RouteInfo ipv4DefaultRoute = findIPv4DefaultRoute(egress);
|
||||||
final String gateway = ipv4DefaultRoute.getGateway().getHostAddress();
|
final String gateway = ipv4DefaultRoute.getGateway().getHostAddress();
|
||||||
@@ -3859,6 +3884,7 @@ public class Vpn {
|
@@ -4627,6 +4652,7 @@ public class Vpn {
|
||||||
|
|
||||||
verifyCallingUidAndPackage(packageName);
|
verifyCallingUidAndPackage(packageName);
|
||||||
enforceNotRestrictedUser();
|
enforceNotRestrictedUser();
|
||||||
|
@ -172,7 +172,7 @@ index 8510de4ef201..7c02924a711d 100644
|
||||||
validateRequiredFeatures(profile);
|
validateRequiredFeatures(profile);
|
||||||
|
|
||||||
if (profile.isRestrictedToTestNetworks) {
|
if (profile.isRestrictedToTestNetworks) {
|
||||||
@@ -3901,6 +3927,7 @@ public class Vpn {
|
@@ -4669,6 +4695,7 @@ public class Vpn {
|
||||||
|
|
||||||
verifyCallingUidAndPackage(packageName);
|
verifyCallingUidAndPackage(packageName);
|
||||||
enforceNotRestrictedUser();
|
enforceNotRestrictedUser();
|
||||||
|
@ -180,7 +180,7 @@ index 8510de4ef201..7c02924a711d 100644
|
||||||
|
|
||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
@@ -3964,6 +3991,7 @@ public class Vpn {
|
@@ -4738,6 +4765,7 @@ public class Vpn {
|
||||||
requireNonNull(packageName, "No package name provided");
|
requireNonNull(packageName, "No package name provided");
|
||||||
|
|
||||||
enforceNotRestrictedUser();
|
enforceNotRestrictedUser();
|
||||||
|
@ -188,7 +188,7 @@ index 8510de4ef201..7c02924a711d 100644
|
||||||
|
|
||||||
// Prepare VPN for startup
|
// Prepare VPN for startup
|
||||||
if (!prepare(packageName, null /* newPackage */, VpnManager.TYPE_VPN_PLATFORM)) {
|
if (!prepare(packageName, null /* newPackage */, VpnManager.TYPE_VPN_PLATFORM)) {
|
||||||
@@ -4085,6 +4113,7 @@ public class Vpn {
|
@@ -4860,6 +4888,7 @@ public class Vpn {
|
||||||
requireNonNull(packageName, "No package name provided");
|
requireNonNull(packageName, "No package name provided");
|
||||||
|
|
||||||
enforceNotRestrictedUser();
|
enforceNotRestrictedUser();
|
||||||
|
|
|
@ -1,236 +0,0 @@
|
||||||
From 628ab41923ce082cd68ab8d4a184823b62a75ab3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: dhacker29 <dhackerdvm@gmail.com>
|
|
||||||
Date: Tue, 24 Nov 2015 01:53:47 -0500
|
|
||||||
Subject: [PATCH 5/6] fw/b: Use ro.build.version.incremental to signal OTA
|
|
||||||
upgrades
|
|
||||||
|
|
||||||
Squash of:
|
|
||||||
|
|
||||||
Author: dhacker29 <dhackerdvm@gmail.com>
|
|
||||||
Date: Tue Nov 24 01:53:47 2015 -0500
|
|
||||||
Core: Use ro.build.date to signal mIsUpgrade
|
|
||||||
|
|
||||||
M: We use a static fingerprint that is only changed when a new OEM build is released, so
|
|
||||||
every flash shows Android is starting instead of upgrading. This will fix that.
|
|
||||||
N: even though we dont have the dexopt sceen on N, this is still needed to delete the
|
|
||||||
correct caches, and grant/deny specific runtime permissions like a true oem update
|
|
||||||
would do.
|
|
||||||
Updated for Nougat By: BeansTown106
|
|
||||||
|
|
||||||
Change-Id: I0e3ed5c8f0351e48944432ae6a0c5194ddeff1fa
|
|
||||||
|
|
||||||
Author: Sam Mortimer <sam@mortimer.me.uk>
|
|
||||||
Date: Fri Sep 28 13:45:00 2018 -0700
|
|
||||||
fw/b UserManagerService: Use ro.build.date to signal upgrades
|
|
||||||
|
|
||||||
*) We changed PackageManagerService to use Build.DATE instead of
|
|
||||||
Build.FINGERPRINT to detect upgrade. Do the same for
|
|
||||||
UserManagerService.
|
|
||||||
*) Affects generation of preboot intent and app data migration.
|
|
||||||
|
|
||||||
Change-Id: I56887b7ca842afdcf3cf84b27b4c04667cf43307
|
|
||||||
|
|
||||||
Author: Wang Han <416810799@qq.com>
|
|
||||||
Date: Sat Dec 29 23:33:20 2018 +0800
|
|
||||||
ShortcutService: Use ro.build.date to signal package scanning
|
|
||||||
|
|
||||||
* Affects system apps scanning.
|
|
||||||
|
|
||||||
Change-Id: I5f6d6647929f5b5ae7e820b18e95bf5ed2ec8d1c
|
|
||||||
|
|
||||||
Author: maxwen <max.weninger@gmail.com>
|
|
||||||
Date: Tue Nov 19 01:02:01 2019 +0100
|
|
||||||
base: Use ro.build.date to clear cache dirs on update
|
|
||||||
|
|
||||||
instead of using ro.build.fingerprint we explictly need to use ro.build.date
|
|
||||||
|
|
||||||
Change-Id: Ib3e80e58eb8c9a21c108e9f5cd2dbdb7ada8e3a4
|
|
||||||
|
|
||||||
Author: maxwen <max.weninger@gmail.com>
|
|
||||||
Date: Wed Oct 28 07:07:10 2020 -0400
|
|
||||||
One more Build.FINGERPRINT to Build.DATE change
|
|
||||||
|
|
||||||
Change-Id: I13dbf3d7f6587d3fcd6591cc0f861b34b6d5561c
|
|
||||||
|
|
||||||
Change-Id: If0eb969ba509981f9209ffa37a949d9042ef4c2a
|
|
||||||
---
|
|
||||||
core/java/android/app/admin/SystemUpdateInfo.java | 4 ++--
|
|
||||||
.../java/com/android/server/am/UserController.java | 3 ++-
|
|
||||||
.../com/android/server/pm/PackageManagerService.java | 12 ++++++------
|
|
||||||
.../core/java/com/android/server/pm/Settings.java | 4 ++--
|
|
||||||
.../java/com/android/server/pm/ShortcutService.java | 2 +-
|
|
||||||
.../com/android/server/pm/UserManagerService.java | 8 ++++----
|
|
||||||
6 files changed, 17 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/core/java/android/app/admin/SystemUpdateInfo.java b/core/java/android/app/admin/SystemUpdateInfo.java
|
|
||||||
index b88bf76c96ca..fdf2b3f54311 100644
|
|
||||||
--- a/core/java/android/app/admin/SystemUpdateInfo.java
|
|
||||||
+++ b/core/java/android/app/admin/SystemUpdateInfo.java
|
|
||||||
@@ -132,7 +132,7 @@ public final class SystemUpdateInfo implements Parcelable {
|
|
||||||
out.startTag(null, tag);
|
|
||||||
out.attributeLong(null, ATTR_RECEIVED_TIME, mReceivedTime);
|
|
||||||
out.attributeInt(null, ATTR_SECURITY_PATCH_STATE, mSecurityPatchState);
|
|
||||||
- out.attribute(null, ATTR_ORIGINAL_BUILD , Build.FINGERPRINT);
|
|
||||||
+ out.attribute(null, ATTR_ORIGINAL_BUILD , Build.VERSION.INCREMENTAL);
|
|
||||||
out.endTag(null, tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ public final class SystemUpdateInfo implements Parcelable {
|
|
||||||
public static SystemUpdateInfo readFromXml(TypedXmlPullParser parser) {
|
|
||||||
// If an OTA has been applied (build fingerprint has changed), discard stale info.
|
|
||||||
final String buildFingerprint = parser.getAttributeValue(null, ATTR_ORIGINAL_BUILD );
|
|
||||||
- if (!Build.FINGERPRINT.equals(buildFingerprint)) {
|
|
||||||
+ if (!Build.VERSION.INCREMENTAL.equals(buildFingerprint)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
|
|
||||||
index 44b186e1541f..9470a728389f 100644
|
|
||||||
--- a/services/core/java/com/android/server/am/UserController.java
|
|
||||||
+++ b/services/core/java/com/android/server/am/UserController.java
|
|
||||||
@@ -71,6 +71,7 @@ import android.content.pm.PackagePartitions;
|
|
||||||
import android.content.pm.UserInfo;
|
|
||||||
import android.os.BatteryStats;
|
|
||||||
import android.os.Binder;
|
|
||||||
+import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.os.Debug;
|
|
||||||
import android.os.Handler;
|
|
||||||
@@ -761,7 +762,7 @@ class UserController implements Handler.Callback {
|
|
||||||
// purposefully block sending BOOT_COMPLETED until after all
|
|
||||||
// PRE_BOOT receivers are finished to avoid ANR'ing apps
|
|
||||||
final UserInfo info = getUserInfo(userId);
|
|
||||||
- if (!Objects.equals(info.lastLoggedInFingerprint, PackagePartitions.FINGERPRINT)
|
|
||||||
+ if (!Objects.equals(info.lastLoggedInFingerprint, Build.VERSION.INCREMENTAL)
|
|
||||||
|| SystemProperties.getBoolean("persist.pm.mock-upgrade", false)) {
|
|
||||||
// Suppress double notifications for managed profiles that
|
|
||||||
// were unlocked automatically as part of their parent user being
|
|
||||||
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
index 47860373156b..858bf1aad92f 100644
|
|
||||||
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
||||||
@@ -1492,7 +1492,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|
||||||
}
|
|
||||||
|
|
||||||
PackageManagerService m = new PackageManagerService(injector, onlyCore, factoryTest,
|
|
||||||
- PackagePartitions.FINGERPRINT, Build.IS_ENG, Build.IS_USERDEBUG,
|
|
||||||
+ Build.VERSION.INCREMENTAL, Build.IS_ENG, Build.IS_USERDEBUG,
|
|
||||||
Build.VERSION.SDK_INT, Build.VERSION.INCREMENTAL);
|
|
||||||
t.traceEnd(); // "create package manager"
|
|
||||||
|
|
||||||
@@ -1954,7 +1954,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|
||||||
!buildFingerprint.equals(ver.fingerprint);
|
|
||||||
if (mIsUpgrade) {
|
|
||||||
PackageManagerServiceUtils.logCriticalInfo(Log.INFO, "Upgrading from "
|
|
||||||
- + ver.fingerprint + " to " + PackagePartitions.FINGERPRINT);
|
|
||||||
+ + ver.fingerprint + " to " + Build.VERSION.INCREMENTAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
mInitAppsHelper = new InitAppsHelper(this, mApexManager, mInstallPackageHelper,
|
|
||||||
@@ -2068,8 +2068,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|
||||||
// allow... it would be nice to have some better way to handle
|
|
||||||
// this situation.
|
|
||||||
if (mIsUpgrade) {
|
|
||||||
- Slog.i(TAG, "Build fingerprint changed from " + ver.fingerprint + " to "
|
|
||||||
- + PackagePartitions.FINGERPRINT
|
|
||||||
+ Slog.i(TAG, "Build incremental version changed from " + ver.fingerprint + " to "
|
|
||||||
+ + Build.VERSION.INCREMENTAL
|
|
||||||
+ "; regranting permissions for internal storage");
|
|
||||||
}
|
|
||||||
mPermissionManager.onStorageVolumeMounted(
|
|
||||||
@@ -2091,7 +2091,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|
||||||
// across OTAs and are used to drive profile verification (post OTA) and
|
|
||||||
// profile compilation (without waiting to collect a fresh set of profiles).
|
|
||||||
if (mIsUpgrade && !mOnlyCore) {
|
|
||||||
- Slog.i(TAG, "Build fingerprint changed; clearing code caches");
|
|
||||||
+ Slog.i(TAG, "Build incremental version changed; clearing code caches");
|
|
||||||
for (int i = 0; i < packageSettings.size(); i++) {
|
|
||||||
final PackageSetting ps = packageSettings.valueAt(i);
|
|
||||||
if (Objects.equals(StorageManager.UUID_PRIVATE_INTERNAL, ps.getVolumeUuid())) {
|
|
||||||
@@ -2102,7 +2102,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|
||||||
| Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- ver.fingerprint = PackagePartitions.FINGERPRINT;
|
|
||||||
+ ver.fingerprint = Build.VERSION.INCREMENTAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Defer the app data fixup until we are done with app data clearing above.
|
|
||||||
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
|
|
||||||
index cfd029346340..a9b624653b92 100644
|
|
||||||
--- a/services/core/java/com/android/server/pm/Settings.java
|
|
||||||
+++ b/services/core/java/com/android/server/pm/Settings.java
|
|
||||||
@@ -445,7 +445,7 @@ public final class Settings implements Watchable, Snappable {
|
|
||||||
public void forceCurrent() {
|
|
||||||
sdkVersion = Build.VERSION.SDK_INT;
|
|
||||||
databaseVersion = CURRENT_DATABASE_VERSION;
|
|
||||||
- fingerprint = PackagePartitions.FINGERPRINT;
|
|
||||||
+ fingerprint = Build.VERSION.INCREMENTAL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -5527,7 +5527,7 @@ public final class Settings implements Watchable, Snappable {
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getExtendedFingerprint(long version) {
|
|
||||||
- return PackagePartitions.FINGERPRINT + "?pc_version=" + version;
|
|
||||||
+ return Build.VERSION.INCREMENTAL + "?pc_version=" + version;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static long uniformRandom(double low, double high) {
|
|
||||||
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
|
|
||||||
index a2b2983a8f35..4564e9dccc13 100644
|
|
||||||
--- a/services/core/java/com/android/server/pm/ShortcutService.java
|
|
||||||
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
|
|
||||||
@@ -5168,7 +5168,7 @@ public class ShortcutService extends IShortcutService.Stub {
|
|
||||||
|
|
||||||
// Injection point.
|
|
||||||
String injectBuildFingerprint() {
|
|
||||||
- return Build.FINGERPRINT;
|
|
||||||
+ return Build.VERSION.INCREMENTAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
final void wtf(String message) {
|
|
||||||
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
|
|
||||||
index 88aeb17dc2b4..af7b481dd311 100644
|
|
||||||
--- a/services/core/java/com/android/server/pm/UserManagerService.java
|
|
||||||
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
|
|
||||||
@@ -4104,7 +4104,7 @@ public class UserManagerService extends IUserManager.Stub {
|
|
||||||
userInfo.creationTime = getCreationTime();
|
|
||||||
userInfo.partial = true;
|
|
||||||
userInfo.preCreated = preCreate;
|
|
||||||
- userInfo.lastLoggedInFingerprint = PackagePartitions.FINGERPRINT;
|
|
||||||
+ userInfo.lastLoggedInFingerprint = Build.VERSION.INCREMENTAL;
|
|
||||||
if (userTypeDetails.hasBadge() && parentId != UserHandle.USER_NULL) {
|
|
||||||
userInfo.profileBadge = getFreeProfileBadgeLU(parentId, userType);
|
|
||||||
}
|
|
||||||
@@ -5390,7 +5390,7 @@ public class UserManagerService extends IUserManager.Stub {
|
|
||||||
t.traceBegin("onBeforeStartUser-" + userId);
|
|
||||||
final int userSerial = userInfo.serialNumber;
|
|
||||||
// Migrate only if build fingerprints mismatch
|
|
||||||
- boolean migrateAppsData = !PackagePartitions.FINGERPRINT.equals(
|
|
||||||
+ boolean migrateAppsData = !Build.VERSION.INCREMENTAL.equals(
|
|
||||||
userInfo.lastLoggedInFingerprint);
|
|
||||||
t.traceBegin("prepareUserData");
|
|
||||||
mUserDataPreparer.prepareUserData(userId, userSerial, StorageManager.FLAG_STORAGE_DE);
|
|
||||||
@@ -5421,7 +5421,7 @@ public class UserManagerService extends IUserManager.Stub {
|
|
||||||
}
|
|
||||||
final int userSerial = userInfo.serialNumber;
|
|
||||||
// Migrate only if build fingerprints mismatch
|
|
||||||
- boolean migrateAppsData = !PackagePartitions.FINGERPRINT.equals(
|
|
||||||
+ boolean migrateAppsData = !Build.VERSION.INCREMENTAL.equals(
|
|
||||||
userInfo.lastLoggedInFingerprint);
|
|
||||||
|
|
||||||
final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
|
|
||||||
@@ -5466,7 +5466,7 @@ public class UserManagerService extends IUserManager.Stub {
|
|
||||||
if (now > EPOCH_PLUS_30_YEARS) {
|
|
||||||
userData.info.lastLoggedInTime = now;
|
|
||||||
}
|
|
||||||
- userData.info.lastLoggedInFingerprint = PackagePartitions.FINGERPRINT;
|
|
||||||
+ userData.info.lastLoggedInFingerprint = Build.VERSION.INCREMENTAL;
|
|
||||||
scheduleWriteUser(userData);
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
|
@ -1,127 +0,0 @@
|
||||||
From 54e70eb7ce231f6a1bef4ffdedb6008b3a949820 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
|
||||||
Date: Sat, 15 Oct 2022 09:33:56 +0000
|
|
||||||
Subject: [PATCH 6/6] Revert "Remove more FDE methods from StorageManager"
|
|
||||||
|
|
||||||
This reverts commit bd13f84152449a3ead6fa8604fd31f48c0224676.
|
|
||||||
---
|
|
||||||
.../android/os/storage/StorageManager.java | 69 ++++++++++++++++---
|
|
||||||
.../internal/os/RoSystemProperties.java | 4 ++
|
|
||||||
2 files changed, 65 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
|
|
||||||
index d9604b3f0145..603612e82007 100644
|
|
||||||
--- a/core/java/android/os/storage/StorageManager.java
|
|
||||||
+++ b/core/java/android/os/storage/StorageManager.java
|
|
||||||
@@ -1681,13 +1681,18 @@ public class StorageManager {
|
|
||||||
}
|
|
||||||
|
|
||||||
/** {@hide}
|
|
||||||
- * Is this device encrypted?
|
|
||||||
- * <p>
|
|
||||||
- * Note: all devices launching with Android 10 (API level 29) or later are
|
|
||||||
- * required to be encrypted. This should only ever return false for
|
|
||||||
- * in-development devices on which encryption has not yet been configured.
|
|
||||||
- *
|
|
||||||
- * @return true if encrypted, false if not encrypted
|
|
||||||
+ * Is this device encryptable or already encrypted?
|
|
||||||
+ * @return true for encryptable or encrypted
|
|
||||||
+ * false not encrypted and not encryptable
|
|
||||||
+ */
|
|
||||||
+ public static boolean isEncryptable() {
|
|
||||||
+ return RoSystemProperties.CRYPTO_ENCRYPTABLE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /** {@hide}
|
|
||||||
+ * Is this device already encrypted?
|
|
||||||
+ * @return true for encrypted. (Implies isEncryptable() == true)
|
|
||||||
+ * false not encrypted
|
|
||||||
*/
|
|
||||||
public static boolean isEncrypted() {
|
|
||||||
return RoSystemProperties.CRYPTO_ENCRYPTED;
|
|
||||||
@@ -1696,7 +1701,7 @@ public class StorageManager {
|
|
||||||
/** {@hide}
|
|
||||||
* Is this device file encrypted?
|
|
||||||
* @return true for file encrypted. (Implies isEncrypted() == true)
|
|
||||||
- * false not encrypted or using "managed" encryption
|
|
||||||
+ * false not encrypted or block encrypted
|
|
||||||
*/
|
|
||||||
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
|
|
||||||
public static boolean isFileEncryptedNativeOnly() {
|
|
||||||
@@ -1706,6 +1711,54 @@ public class StorageManager {
|
|
||||||
return RoSystemProperties.CRYPTO_FILE_ENCRYPTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /** {@hide}
|
|
||||||
+ * Is this device block encrypted?
|
|
||||||
+ * @return true for block encrypted. (Implies isEncrypted() == true)
|
|
||||||
+ * false not encrypted or file encrypted
|
|
||||||
+ */
|
|
||||||
+ public static boolean isBlockEncrypted() {
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /** {@hide}
|
|
||||||
+ * Is this device block encrypted with credentials?
|
|
||||||
+ * @return true for crediential block encrypted.
|
|
||||||
+ * (Implies isBlockEncrypted() == true)
|
|
||||||
+ * false not encrypted, file encrypted or default block encrypted
|
|
||||||
+ */
|
|
||||||
+ public static boolean isNonDefaultBlockEncrypted() {
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /** {@hide}
|
|
||||||
+ * Is this device in the process of being block encrypted?
|
|
||||||
+ * @return true for encrypting.
|
|
||||||
+ * false otherwise
|
|
||||||
+ * Whether device isEncrypted at this point is undefined
|
|
||||||
+ * Note that only system services and CryptKeeper will ever see this return
|
|
||||||
+ * true - no app will ever be launched in this state.
|
|
||||||
+ * Also note that this state will not change without a teardown of the
|
|
||||||
+ * framework, so no service needs to check for changes during their lifespan
|
|
||||||
+ */
|
|
||||||
+ public static boolean isBlockEncrypting() {
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /** {@hide}
|
|
||||||
+ * Is this device non default block encrypted and in the process of
|
|
||||||
+ * prompting for credentials?
|
|
||||||
+ * @return true for prompting for credentials.
|
|
||||||
+ * (Implies isNonDefaultBlockEncrypted() == true)
|
|
||||||
+ * false otherwise
|
|
||||||
+ * Note that only system services and CryptKeeper will ever see this return
|
|
||||||
+ * true - no app will ever be launched in this state.
|
|
||||||
+ * Also note that this state will not change without a teardown of the
|
|
||||||
+ * framework, so no service needs to check for changes during their lifespan
|
|
||||||
+ */
|
|
||||||
+ public static boolean inCryptKeeperBounce() {
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/** {@hide} */
|
|
||||||
public static boolean isFileEncryptedEmulatedOnly() {
|
|
||||||
return SystemProperties.getBoolean(StorageManager.PROP_EMULATE_FBE, false);
|
|
||||||
diff --git a/core/java/com/android/internal/os/RoSystemProperties.java b/core/java/com/android/internal/os/RoSystemProperties.java
|
|
||||||
index cccd80e82420..adb5c107bc62 100644
|
|
||||||
--- a/core/java/com/android/internal/os/RoSystemProperties.java
|
|
||||||
+++ b/core/java/com/android/internal/os/RoSystemProperties.java
|
|
||||||
@@ -62,10 +62,14 @@ public class RoSystemProperties {
|
|
||||||
public static final CryptoProperties.type_values CRYPTO_TYPE =
|
|
||||||
CryptoProperties.type().orElse(CryptoProperties.type_values.NONE);
|
|
||||||
// These are pseudo-properties
|
|
||||||
+ public static final boolean CRYPTO_ENCRYPTABLE =
|
|
||||||
+ CRYPTO_STATE != CryptoProperties.state_values.UNSUPPORTED;
|
|
||||||
public static final boolean CRYPTO_ENCRYPTED =
|
|
||||||
CRYPTO_STATE == CryptoProperties.state_values.ENCRYPTED;
|
|
||||||
public static final boolean CRYPTO_FILE_ENCRYPTED =
|
|
||||||
CRYPTO_TYPE == CryptoProperties.type_values.FILE;
|
|
||||||
+ public static final boolean CRYPTO_BLOCK_ENCRYPTED =
|
|
||||||
+ CRYPTO_TYPE == CryptoProperties.type_values.BLOCK;
|
|
||||||
|
|
||||||
public static final boolean CONTROL_PRIVAPP_PERMISSIONS_LOG =
|
|
||||||
"log".equalsIgnoreCase(CONTROL_PRIVAPP_PERMISSIONS);
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
From cf04b02d96fef364996067ca4ecc51b65f521dca Mon Sep 17 00:00:00 2001
|
From 89613b61836c202b6ba3d3f35be16e24500ffe6c Mon Sep 17 00:00:00 2001
|
||||||
From: Peter Cai <peter@typeblog.net>
|
From: Peter Cai <peter@typeblog.net>
|
||||||
Date: Tue, 6 Dec 2022 18:30:32 -0500
|
Date: Tue, 6 Dec 2022 18:30:32 -0500
|
||||||
Subject: [PATCH] Revert "detect inability to write to index != 0 of bpf map
|
Subject: [PATCH] Revert "detect inability to write to index != 0 of bpf map
|
||||||
|
@ -10,10 +10,10 @@ This reverts commit ead9d83423877458023056f6ccf9390950d6726f.
|
||||||
1 file changed, 9 deletions(-)
|
1 file changed, 9 deletions(-)
|
||||||
|
|
||||||
diff --git a/bpfloader/BpfLoader.cpp b/bpfloader/BpfLoader.cpp
|
diff --git a/bpfloader/BpfLoader.cpp b/bpfloader/BpfLoader.cpp
|
||||||
index 5cd80b7..bc72811 100644
|
index e53669a..2816161 100644
|
||||||
--- a/bpfloader/BpfLoader.cpp
|
--- a/bpfloader/BpfLoader.cpp
|
||||||
+++ b/bpfloader/BpfLoader.cpp
|
+++ b/bpfloader/BpfLoader.cpp
|
||||||
@@ -199,15 +199,6 @@ int main(int argc, char** argv) {
|
@@ -307,15 +307,6 @@ int main(int argc, char** argv) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,5 +30,5 @@ index 5cd80b7..bc72811 100644
|
||||||
ALOGE("Failed to set bpf.progs_loaded property");
|
ALOGE("Failed to set bpf.progs_loaded property");
|
||||||
return 1;
|
return 1;
|
||||||
--
|
--
|
||||||
2.38.1
|
2.41.0
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
From f53da166596fc34df3255b1c5120fd7cdcf21e5f Mon Sep 17 00:00:00 2001
|
From b370e176ea2fe56423d668a9c7a53000d6154b8a Mon Sep 17 00:00:00 2001
|
||||||
From: Isaac Chen <tingyi364@gmail.com>
|
From: Isaac Chen <tingyi364@gmail.com>
|
||||||
Date: Wed, 23 Jun 2021 13:07:30 +0800
|
Date: Wed, 23 Jun 2021 13:07:30 +0800
|
||||||
Subject: [PATCH 1/2] init: Do not start console service when debuggable
|
Subject: [PATCH 1/2] init: Do not start console service when debuggable
|
||||||
|
@ -13,10 +13,10 @@ Change-Id: I34cfd6b42d3b9aee4b3e63181480cfb8b1255f29
|
||||||
1 file changed, 3 deletions(-)
|
1 file changed, 3 deletions(-)
|
||||||
|
|
||||||
diff --git a/rootdir/init.rc b/rootdir/init.rc
|
diff --git a/rootdir/init.rc b/rootdir/init.rc
|
||||||
index 02e51d2c4..ab45bb032 100644
|
index 1e6918d00..8b48a9c87 100644
|
||||||
--- a/rootdir/init.rc
|
--- a/rootdir/init.rc
|
||||||
+++ b/rootdir/init.rc
|
+++ b/rootdir/init.rc
|
||||||
@@ -1277,9 +1277,6 @@ on property:ro.debuggable=1
|
@@ -1312,9 +1312,6 @@ on property:ro.debuggable=1
|
||||||
# Give reads to anyone for the accessibility trace folder on debug builds.
|
# Give reads to anyone for the accessibility trace folder on debug builds.
|
||||||
chmod 0775 /data/misc/a11ytrace
|
chmod 0775 /data/misc/a11ytrace
|
||||||
|
|
||||||
|
@ -27,5 +27,5 @@ index 02e51d2c4..ab45bb032 100644
|
||||||
# TODO(b/135984674): reset all necessary properties here.
|
# TODO(b/135984674): reset all necessary properties here.
|
||||||
setprop sys.boot_completed ""
|
setprop sys.boot_completed ""
|
||||||
--
|
--
|
||||||
2.40.0
|
2.41.0
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
From b50dd85e88568bddedbab1e18984a5b5578c8612 Mon Sep 17 00:00:00 2001
|
From 1b075ec9186fd7b8b501272370a7ebfe43fe2fb4 Mon Sep 17 00:00:00 2001
|
||||||
From: Pierre-Hugues Husson <phh@phh.me>
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
Date: Fri, 21 Apr 2023 13:08:48 -0400
|
Date: Fri, 21 Apr 2023 13:08:48 -0400
|
||||||
Subject: [PATCH 2/2] Let system override some properties (ro.apex.updatable,
|
Subject: [PATCH 2/2] Let system override some properties (ro.apex.updatable,
|
||||||
|
@ -10,10 +10,10 @@ Change-Id: I3c84fa617f0ab7990abb0d905230a8703cf39bf7
|
||||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/init/property_service.cpp b/init/property_service.cpp
|
diff --git a/init/property_service.cpp b/init/property_service.cpp
|
||||||
index 26341b196..19fc09d63 100644
|
index 8da69822c..0680b8e06 100644
|
||||||
--- a/init/property_service.cpp
|
--- a/init/property_service.cpp
|
||||||
+++ b/init/property_service.cpp
|
+++ b/init/property_service.cpp
|
||||||
@@ -726,7 +726,12 @@ static void LoadProperties(char* data, const char* filter, const char* filename,
|
@@ -787,7 +787,12 @@ static void LoadProperties(char* data, const char* filter, const char* filename,
|
||||||
} else if (it->second != value) {
|
} else if (it->second != value) {
|
||||||
LOG(WARNING) << "Overriding previous property '" << key << "':'" << it->second
|
LOG(WARNING) << "Overriding previous property '" << key << "':'" << it->second
|
||||||
<< "' with new value '" << value << "'";
|
<< "' with new value '" << value << "'";
|
||||||
|
@ -28,5 +28,5 @@ index 26341b196..19fc09d63 100644
|
||||||
} else {
|
} else {
|
||||||
LOG(ERROR) << "Do not have permissions to set '" << key << "' to '" << value
|
LOG(ERROR) << "Do not have permissions to set '" << key << "' to '" << value
|
||||||
--
|
--
|
||||||
2.40.0
|
2.41.0
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue