Sync up to v117
This commit is contained in:
parent
b71d406ba3
commit
04c4a9e1b3
25
patches/platform_frameworks_av/0009-Enable-debug.patch
Normal file
25
patches/platform_frameworks_av/0009-Enable-debug.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 7e4a00ff86ca1be573a06e2f358d4783bc15d5bc Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 5 Aug 2019 17:27:18 +0200
|
||||
Subject: [PATCH 09/11] Enable debug
|
||||
|
||||
---
|
||||
.../audiopolicy/common/managerdefinitions/src/Serializer.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
index 380e2f82b..59385fb76 100644
|
||||
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
#define LOG_TAG "APM::Serializer"
|
||||
-//#define LOG_NDEBUG 0
|
||||
+#define LOG_NDEBUG 0
|
||||
|
||||
#include "Serializer.h"
|
||||
#include <media/convert.h>
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,25 @@
|
||||
From ded09326e6e4aa9ca3c6f7a7dfbdd36b22bc4af6 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 5 Aug 2019 17:27:47 +0200
|
||||
Subject: [PATCH 10/11] Fix use-after-free (object on stack)
|
||||
|
||||
---
|
||||
.../audiopolicy/common/managerdefinitions/src/Serializer.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
index 59385fb76..1c5967141 100644
|
||||
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
@@ -326,7 +326,7 @@ status_t DevicePortTraits::deserialize(_xmlDoc *doc, const _xmlNode *root, PtrEl
|
||||
ALOGW("%s: bad type %08x", __FUNCTION__, type);
|
||||
return BAD_VALUE;
|
||||
}
|
||||
- deviceDesc = new Element(type, String8(name.c_str()));
|
||||
+ deviceDesc = new Element(type, String8(strdup(name.c_str())));
|
||||
|
||||
string address = getXmlAttribute(root, Attributes::address);
|
||||
if (!address.empty()) {
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,127 @@
|
||||
From 91ab9729aa4f4ca4d2a017062408795051a24059 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 5 Aug 2019 18:09:50 +0200
|
||||
Subject: [PATCH 11/11] Fix BT in-call on CAF devices
|
||||
|
||||
See https://github.com/phhusson/treble_experimentations/issues/374
|
||||
|
||||
In Qualcomm's BSP audio_policy_configuration.xml, one route is missing,
|
||||
from primary output and telephony to BT SCO.
|
||||
|
||||
Add it if we detect telephony and bt sco, but no such route.
|
||||
---
|
||||
.../managerdefinitions/src/Serializer.cpp | 91 +++++++++++++++++++
|
||||
1 file changed, 91 insertions(+)
|
||||
|
||||
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
index 1c5967141..024f122f8 100644
|
||||
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
@@ -424,6 +424,96 @@ status_t RouteTraits::deserialize(_xmlDoc */*doc*/, const _xmlNode *root, PtrEle
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
+static void fixupQualcommBtScoRoute(RouteTraits::Collection& routes, DevicePortTraits::Collection& devicePorts, HwModule* ctx) {
|
||||
+ // On many Qualcomm devices, there is a BT SCO Headset Mic => primary input mix
|
||||
+ // But Telephony Rx => BT SCO Headset route is missing
|
||||
+ // When we detect such case, add the missing route
|
||||
+
|
||||
+ // If we have:
|
||||
+ // <route type="mix" sink="Telephony Tx" sources="voice_tx"/>
|
||||
+ // <route type="mix" sink="primary input" sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic"/>
|
||||
+ // <devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink" />
|
||||
+ // And no <route type="mix" sink="BT SCO Headset" />
|
||||
+
|
||||
+ // Add:
|
||||
+ // <route type="mix" sink="BT SCO Headset" sources="primary output,deep_buffer,compressed_offload,Telephony Rx"/>
|
||||
+ bool foundBtScoHeadsetDevice = false;
|
||||
+ for(const auto& device: devicePorts) {
|
||||
+ if(device->getTagName() == String8("BT SCO Headset")) {
|
||||
+ foundBtScoHeadsetDevice = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ if(!foundBtScoHeadsetDevice) {
|
||||
+ ALOGE("No BT SCO Headset device found, don't patch policy");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ bool foundTelephony = false;
|
||||
+ bool foundBtScoInput = false;
|
||||
+ bool foundScoHeadsetRoute = false;
|
||||
+ for(const auto& route: routes) {
|
||||
+ ALOGE("Looking at route %d\n", route->getType());
|
||||
+ if(route->getType() != AUDIO_ROUTE_MIX)
|
||||
+ continue;
|
||||
+ auto sink = route->getSink();
|
||||
+ ALOGE("... With sink %s\n", sink->getTagName().c_str());
|
||||
+ if(sink->getTagName() == String8("Telephony Tx")) {
|
||||
+ foundTelephony = true;
|
||||
+ continue;
|
||||
+ }
|
||||
+ if(sink->getTagName() == String8("BT SCO Headset")) {
|
||||
+ foundScoHeadsetRoute = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ for(const auto& source: route->getSources()) {
|
||||
+ ALOGE("... With source %s\n", source->getTagName().c_str());
|
||||
+ if(source->getTagName() == String8("BT SCO Headset Mic")) {
|
||||
+ foundBtScoInput = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ //The route we want to add is already there
|
||||
+ ALOGE("Done looking for existing routes");
|
||||
+ if(foundScoHeadsetRoute)
|
||||
+ return;
|
||||
+
|
||||
+ ALOGE("No existing route found... %d %d", foundTelephony ? 1 : 0, foundBtScoInput ? 1 : 0);
|
||||
+ //We couldn't find the routes we assume are required for the function we want to add
|
||||
+ if(!foundTelephony || !foundBtScoInput)
|
||||
+ return;
|
||||
+ ALOGE("Adding our own.");
|
||||
+
|
||||
+ // Add:
|
||||
+ // <route type="mix" sink="BT SCO Headset" sources="primary output,deep_buffer,compressed_offload,Telephony Rx"/>
|
||||
+ AudioRoute *newRoute = new AudioRoute(AUDIO_ROUTE_MIX);
|
||||
+
|
||||
+ auto sink = ctx->findPortByTagName(String8("BT SCO Headset"));
|
||||
+ ALOGE("Got sink %p\n", sink.get());
|
||||
+ newRoute->setSink(sink);
|
||||
+
|
||||
+ AudioPortVector sources;
|
||||
+ for(const auto& sourceName: {
|
||||
+ "primary output",
|
||||
+ "deep_buffer",
|
||||
+ "compressed_offload",
|
||||
+ "Telephony Rx"
|
||||
+ }) {
|
||||
+ auto source = ctx->findPortByTagName(String8(sourceName));
|
||||
+ ALOGE("Got source %p\n", source.get());
|
||||
+ sources.add(source);
|
||||
+ source->addRoute(newRoute);
|
||||
+ }
|
||||
+
|
||||
+ newRoute->setSources(sources);
|
||||
+
|
||||
+ sink->addRoute(newRoute);
|
||||
+
|
||||
+ auto ret = routes.add(newRoute);
|
||||
+ ALOGE("route add returned %zd", ret);
|
||||
+}
|
||||
+
|
||||
const char *const ModuleTraits::childAttachedDevicesTag = "attachedDevices";
|
||||
const char *const ModuleTraits::childAttachedDeviceTag = "item";
|
||||
const char *const ModuleTraits::childDefaultOutputDeviceTag = "defaultOutputDevice";
|
||||
@@ -465,6 +555,7 @@ status_t ModuleTraits::deserialize(xmlDocPtr doc, const xmlNode *root, PtrElemen
|
||||
|
||||
RouteTraits::Collection routes;
|
||||
deserializeCollection<RouteTraits>(doc, root, routes, module.get());
|
||||
+ fixupQualcommBtScoRoute(routes, devicePorts, module.get());
|
||||
module->setRoutes(routes);
|
||||
|
||||
const xmlNode *children = root->xmlChildrenNode;
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,44 @@
|
||||
From 5cc2638b5cf4e386e74301934982756bd485dada Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 5 Aug 2019 21:19:45 +0200
|
||||
Subject: [PATCH 8/8] Instead of panic-ing to bootloader (useless for us mere
|
||||
mortals), panic to recovery
|
||||
|
||||
Change-Id: If3ff381de845e579814941f89e0a6699c9f8c0e0
|
||||
---
|
||||
init/init.cpp | 2 +-
|
||||
init/log.cpp | 4 ++--
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/init/init.cpp b/init/init.cpp
|
||||
index fc58eeabb..168e68042 100644
|
||||
--- a/init/init.cpp
|
||||
+++ b/init/init.cpp
|
||||
@@ -478,7 +478,7 @@ static void InstallRebootSignalHandlers() {
|
||||
// RebootSystem uses syscall() which isn't actually async-signal-safe, but our only option
|
||||
// and probably good enough given this is already an error case and only enabled for
|
||||
// development builds.
|
||||
- RebootSystem(ANDROID_RB_RESTART2, "bootloader");
|
||||
+ RebootSystem(ANDROID_RB_RESTART2, "recovery");
|
||||
};
|
||||
action.sa_flags = SA_RESTART;
|
||||
sigaction(SIGABRT, &action, nullptr);
|
||||
diff --git a/init/log.cpp b/init/log.cpp
|
||||
index 6198fc25f..759b54117 100644
|
||||
--- a/init/log.cpp
|
||||
+++ b/init/log.cpp
|
||||
@@ -46,9 +46,9 @@ static void InitAborter(const char* abort_message) {
|
||||
has_aborted = true;
|
||||
// Do not queue "shutdown" trigger since we want to shutdown immediately and it's not likely
|
||||
// that we can even run the ActionQueue at this point.
|
||||
- DoReboot(ANDROID_RB_RESTART2, "reboot", "bootloader", false);
|
||||
+ DoReboot(ANDROID_RB_RESTART2, "reboot", "recovery", false);
|
||||
} else {
|
||||
- RebootSystem(ANDROID_RB_RESTART2, "bootloader");
|
||||
+ RebootSystem(ANDROID_RB_RESTART2, "recovery");
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,44 @@
|
||||
From b0c0422579e2d2958c59de694d4bdf0af9c4e77f Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 29 Jul 2019 18:09:12 +0200
|
||||
Subject: [PATCH 2/2] Don't fail on FTP conntracking failing
|
||||
|
||||
The issue has been seen on some Samsung devices.
|
||||
See https://github.com/phhusson/treble_experimentations/issues/425
|
||||
|
||||
Thanks @zamrih for pin-pointing the issue and validating fix
|
||||
|
||||
Change-Id: I3d9c865eb5a4b421f9983210c2ceae62b4906234
|
||||
---
|
||||
server/TetherController.cpp | 14 ++++++++++----
|
||||
1 file changed, 10 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/server/TetherController.cpp b/server/TetherController.cpp
|
||||
index 884b8138..0c0ad68a 100644
|
||||
--- a/server/TetherController.cpp
|
||||
+++ b/server/TetherController.cpp
|
||||
@@ -629,11 +629,17 @@ int TetherController::setForwardRules(bool add, const char *intIface, const char
|
||||
return -1;
|
||||
}
|
||||
|
||||
+ std::vector<std::string> v4Ftp = {
|
||||
+ "*raw",
|
||||
+ StringPrintf("%s %s -p tcp --dport 21 -i %s -j CT --helper ftp",
|
||||
+ op, LOCAL_RAW_PREROUTING, intIface),
|
||||
+ "COMMIT",
|
||||
+ };
|
||||
+ if(iptablesRestoreFunction(V4, Join(v4Ftp, '\n'), nullptr) == -1) {
|
||||
+ ALOGE("Failed adding iptables CT target on FTP.");
|
||||
+ }
|
||||
+
|
||||
std::vector<std::string> v4 = {
|
||||
- "*raw",
|
||||
- StringPrintf("%s %s -p tcp --dport 21 -i %s -j CT --helper ftp",
|
||||
- op, LOCAL_RAW_PREROUTING, intIface),
|
||||
- "COMMIT",
|
||||
"*filter",
|
||||
StringPrintf("%s %s -i %s -o %s -m state --state ESTABLISHED,RELATED -g %s",
|
||||
op, LOCAL_FORWARD, extIface, intIface, LOCAL_TETHER_COUNTERS_CHAIN),
|
||||
--
|
||||
2.17.1
|
||||
|
Loading…
x
Reference in New Issue
Block a user