From e2871bd0d88f94a729550b428c0551fbc952a04e Mon Sep 17 00:00:00 2001 From: NIEJuhu Date: Fri, 20 Dec 2019 18:51:21 +0800 Subject: [PATCH] Do not add duplicate soinfos to g_default_namespace The soinfo instances of linker and vdso have been added to g_default_namespace before init_default_namespace() is called. So init_default_namespace() don't have to add them a second time. Test: manual Change-Id: I29b3da782b1e9445509f45a7698561fc3e19e9a1 --- linker/linker.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/linker/linker.cpp b/linker/linker.cpp index 1393eb521..1e77daf0c 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -4195,11 +4195,13 @@ std::vector init_default_namespaces(const char* executable // we also need vdso to be available for all namespaces (if present) soinfo* vdso = solist_get_vdso(); for (auto it : namespaces) { - it.second->add_soinfo(ld_android_so); - if (vdso != nullptr) { - it.second->add_soinfo(vdso); + if (it.second != &g_default_namespace) { + it.second->add_soinfo(ld_android_so); + if (vdso != nullptr) { + it.second->add_soinfo(vdso); + } + // somain and ld_preloads are added to these namespaces after LD_PRELOAD libs are linked } - // somain and ld_preloads are added to these namespaces after LD_PRELOAD libs are linked } set_application_target_sdk_version(config->target_sdk_version());