Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4ca2500f authored by sergiuferentz's avatar sergiuferentz Committed by Automerger Merge Worker
Browse files

Fix for heap-use-after-free in GPUService.cpp am: 7fb70780

parents 07bf8f73 7fb70780
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -71,6 +71,7 @@ filegroup {
cc_library_shared {
cc_library_shared {
    name: "libgpuservice",
    name: "libgpuservice",
    defaults: ["libgpuservice_production_defaults"],
    defaults: ["libgpuservice_production_defaults"],
    export_include_dirs: ["include"],
    srcs: [
    srcs: [
        ":libgpuservice_sources",
        ":libgpuservice_sources",
    ],
    ],
+9 −5
Original line number Original line Diff line number Diff line
@@ -16,7 +16,7 @@


#define ATRACE_TAG ATRACE_TAG_GRAPHICS
#define ATRACE_TAG ATRACE_TAG_GRAPHICS


#include "GpuService.h"
#include "gpuservice/GpuService.h"


#include <android-base/stringprintf.h>
#include <android-base/stringprintf.h>
#include <binder/IPCThreadState.h>
#include <binder/IPCThreadState.h>
@@ -34,6 +34,7 @@
#include <vkjson.h>
#include <vkjson.h>


#include <thread>
#include <thread>
#include <memory>


namespace android {
namespace android {


@@ -55,18 +56,21 @@ GpuService::GpuService()
        mGpuStats(std::make_unique<GpuStats>()),
        mGpuStats(std::make_unique<GpuStats>()),
        mGpuMemTracer(std::make_unique<GpuMemTracer>()) {
        mGpuMemTracer(std::make_unique<GpuMemTracer>()) {


    std::thread gpuMemAsyncInitThread([this]() {
    mGpuMemAsyncInitThread = std::make_unique<std::thread>([this] (){
        mGpuMem->initialize();
        mGpuMem->initialize();
        mGpuMemTracer->initialize(mGpuMem);
        mGpuMemTracer->initialize(mGpuMem);
    });
    });
    gpuMemAsyncInitThread.detach();


    std::thread gpuWorkAsyncInitThread([this]() {
    mGpuWorkAsyncInitThread = std::make_unique<std::thread>([this]() {
        mGpuWork->initialize();
        mGpuWork->initialize();
    });
    });
    gpuWorkAsyncInitThread.detach();
};
};


GpuService::~GpuService() {
    mGpuWorkAsyncInitThread->join();
    mGpuMemAsyncInitThread->join();
}

void GpuService::setGpuStats(const std::string& driverPackageName,
void GpuService::setGpuStats(const std::string& driverPackageName,
                             const std::string& driverVersionName, uint64_t driverVersionCode,
                             const std::string& driverVersionName, uint64_t driverVersionCode,
                             int64_t driverBuildTime, const std::string& appPackageName,
                             int64_t driverBuildTime, const std::string& appPackageName,
+4 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@
#include <serviceutils/PriorityDumper.h>
#include <serviceutils/PriorityDumper.h>


#include <mutex>
#include <mutex>
#include <thread>
#include <vector>
#include <vector>


namespace android {
namespace android {
@@ -41,6 +42,7 @@ public:
    static const char* const SERVICE_NAME ANDROID_API;
    static const char* const SERVICE_NAME ANDROID_API;


    GpuService() ANDROID_API;
    GpuService() ANDROID_API;
    ~GpuService();


protected:
protected:
    status_t shellCommand(int in, int out, int err, std::vector<String16>& args) override;
    status_t shellCommand(int in, int out, int err, std::vector<String16>& args) override;
@@ -86,6 +88,8 @@ private:
    std::unique_ptr<GpuMemTracer> mGpuMemTracer;
    std::unique_ptr<GpuMemTracer> mGpuMemTracer;
    std::mutex mLock;
    std::mutex mLock;
    std::string mDeveloperDriverPath;
    std::string mDeveloperDriverPath;
    std::unique_ptr<std::thread> mGpuMemAsyncInitThread;
    std::unique_ptr<std::thread> mGpuWorkAsyncInitThread;
};
};


} // namespace android
} // namespace android
+1 −1
Original line number Original line Diff line number Diff line
@@ -18,7 +18,7 @@
#include <binder/IServiceManager.h>
#include <binder/IServiceManager.h>
#include <binder/ProcessState.h>
#include <binder/ProcessState.h>
#include <sys/resource.h>
#include <sys/resource.h>
#include "GpuService.h"
#include "gpuservice/GpuService.h"


using namespace android;
using namespace android;


+2 −0
Original line number Original line Diff line number Diff line
@@ -31,6 +31,7 @@ cc_test {
        "GpuMemTest.cpp",
        "GpuMemTest.cpp",
        "GpuMemTracerTest.cpp",
        "GpuMemTracerTest.cpp",
        "GpuStatsTest.cpp",
        "GpuStatsTest.cpp",
        "GpuServiceTest.cpp",
    ],
    ],
    header_libs: ["bpf_headers"],
    header_libs: ["bpf_headers"],
    shared_libs: [
    shared_libs: [
@@ -47,6 +48,7 @@ cc_test {
        "libstatslog",
        "libstatslog",
        "libstatspull",
        "libstatspull",
        "libutils",
        "libutils",
        "libgpuservice",
    ],
    ],
    static_libs: [
    static_libs: [
        "libgmock",
        "libgmock",
Loading