diff --git a/opencl/test/unit_test/gtpin/gtpin_tests.cpp b/opencl/test/unit_test/gtpin/gtpin_tests.cpp index e03654791f..099bef302f 100644 --- a/opencl/test/unit_test/gtpin/gtpin_tests.cpp +++ b/opencl/test/unit_test/gtpin/gtpin_tests.cpp @@ -2515,13 +2515,13 @@ TEST(GTPinInitNotifyTests, givenAvailablePlatformsAndNoEnvironmentVariableSetWhe VariableBackup gtpinCounterBackup(>pinInitTimesCalled, 0u); uint32_t (*openPinHandler)(void *) = [](void *arg) -> uint32_t { gtpinInitTimesCalled++; return 0; }; - MockOsLibrary mockLibraryObject(reinterpret_cast(openPinHandler), false); - MockOsLibrary::loadLibraryNewObject = &mockLibraryObject; + MockOsLibrary::loadLibraryNewObject = new MockOsLibrary(reinterpret_cast(openPinHandler), false); NEO::PinContext::osLibraryLoadFunction = MockOsLibrary::load; gtPinTryNotifyInit(); EXPECT_EQ(0u, gtpinInitTimesCalled); platformsImpl->clear(); + delete MockOsLibrary::loadLibraryNewObject; } TEST(GTPinInitNotifyTests, givenNoPlatformsAvailableAndEnvironmentVariableSetWhenTryingToNotifyGtpinInitializationThenGtpinDoesNotGetNotified) { @@ -2534,13 +2534,13 @@ TEST(GTPinInitNotifyTests, givenNoPlatformsAvailableAndEnvironmentVariableSetWhe VariableBackup *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs); uint32_t (*openPinHandler)(void *) = [](void *arg) -> uint32_t { gtpinInitTimesCalled++; return 0; }; - MockOsLibrary mockLibraryObject(reinterpret_cast(openPinHandler), false); - MockOsLibrary::loadLibraryNewObject = &mockLibraryObject; + MockOsLibrary::loadLibraryNewObject = new MockOsLibrary(reinterpret_cast(openPinHandler), false); NEO::PinContext::osLibraryLoadFunction = MockOsLibrary::load; gtPinTryNotifyInit(); EXPECT_EQ(0u, gtpinInitTimesCalled); platformsImpl->clear(); + delete MockOsLibrary::loadLibraryNewObject; } TEST(GTPinInitNotifyTests, givenAvailablePlatformsAndEnvironmentVariableSetWhenTryingToNotifyGtpinInitializationThenGtpinGetsNotified) { @@ -2554,8 +2554,7 @@ TEST(GTPinInitNotifyTests, givenAvailablePlatformsAndEnvironmentVariableSetWhenT VariableBackup *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs); uint32_t (*openPinHandler)(void *) = [](void *arg) -> uint32_t { gtpinInitTimesCalled++; return 0; }; - MockOsLibrary mockLibraryObject(reinterpret_cast(openPinHandler), false); - MockOsLibrary::loadLibraryNewObject = &mockLibraryObject; + MockOsLibrary::loadLibraryNewObject = new MockOsLibrary(reinterpret_cast(openPinHandler), false); NEO::PinContext::osLibraryLoadFunction = MockOsLibrary::load; gtPinTryNotifyInit(); diff --git a/shared/source/os_interface/linux/drm_memory_manager.cpp b/shared/source/os_interface/linux/drm_memory_manager.cpp index d0d1ee26f2..7ae60bfb02 100644 --- a/shared/source/os_interface/linux/drm_memory_manager.cpp +++ b/shared/source/os_interface/linux/drm_memory_manager.cpp @@ -634,11 +634,15 @@ GraphicsAllocation *DrmMemoryManager::allocateMemoryByKMD(const AllocationData & bo->setAddress(gpuRange); auto allocation = new DrmAllocation(allocationData.rootDeviceIndex, allocationData.type, bo.get(), nullptr, gpuRange, bufferSize, MemoryPool::SystemCpuInaccessible); + if (!allocation) { + return nullptr; + } + bo.release(); + allocation->setDefaultGmm(gmm.release()); allocation->setReservedAddressRange(reinterpret_cast(gpuRange), bufferSize); - bo.release(); return allocation; } diff --git a/shared/source/pin/pin.cpp b/shared/source/pin/pin.cpp index 1a86ed847a..323a53e243 100644 --- a/shared/source/pin/pin.cpp +++ b/shared/source/pin/pin.cpp @@ -11,14 +11,14 @@ #include "os_pin.h" +#include + namespace NEO { PinContext::OsLibraryLoadPtr PinContext::osLibraryLoadFunction(NEO::OsLibrary::load); bool PinContext::init(const std::string >PinOpenFunctionName) { - NEO::OsLibrary *hGtPinLibrary = nullptr; - - hGtPinLibrary = PinContext::osLibraryLoadFunction(PinContext::gtPinLibraryFilename.c_str()); + auto hGtPinLibrary = std::unique_ptr(PinContext::osLibraryLoadFunction(PinContext::gtPinLibraryFilename.c_str())); if (hGtPinLibrary == nullptr) { PRINT_DEBUG_STRING(NEO::DebugManager.flags.PrintDebugMessages.get(), stderr, "Unable to find gtpin library %s\n", PinContext::gtPinLibraryFilename.c_str()); diff --git a/shared/test/common/mocks/mock_os_library.h b/shared/test/common/mocks/mock_os_library.h index f07ce8a295..c91a4c7ec1 100644 --- a/shared/test/common/mocks/mock_os_library.h +++ b/shared/test/common/mocks/mock_os_library.h @@ -36,6 +36,7 @@ class MockOsLibrary : public NEO::OsLibrary { static OsLibrary *load(const std::string &name) { OsLibrary *ptr = loadLibraryNewObject; + loadLibraryNewObject = nullptr; return ptr; } }; diff --git a/shared/test/unit_test/pin/test_pin.cpp b/shared/test/unit_test/pin/test_pin.cpp index b816440c21..c690551320 100644 --- a/shared/test/unit_test/pin/test_pin.cpp +++ b/shared/test/unit_test/pin/test_pin.cpp @@ -14,8 +14,7 @@ namespace ULT { TEST(PinInitializationTest, GivenValidLibraryPinContextInitSucceeds) { uint32_t (*openPinHandler)(void *) = [](void *arg) -> uint32_t { return 0; }; - MockOsLibrary mockLibraryObject(reinterpret_cast(openPinHandler), false); - MockOsLibrary::loadLibraryNewObject = &mockLibraryObject; + MockOsLibrary::loadLibraryNewObject = new MockOsLibrary(reinterpret_cast(openPinHandler), false); NEO::PinContext::osLibraryLoadFunction = MockOsLibrary::load; std::string mockGTPinFunctionName{"aaa"}; EXPECT_TRUE(NEO::PinContext::init(mockGTPinFunctionName)); @@ -33,8 +32,7 @@ TEST(PinInitializationTest, GivenBadLibraryNamePinContextInitFAILS) { } TEST(PinInitializationTest, GivenBadProcAddressPinContextInitFAILS) { - MockOsLibrary mockLibraryObject(nullptr, false); - MockOsLibrary::loadLibraryNewObject = &mockLibraryObject; + MockOsLibrary::loadLibraryNewObject = new MockOsLibrary(nullptr, false); NEO::PinContext::osLibraryLoadFunction = MockOsLibrary::load; std::string mockGTPinFunctionName{"aaa"}; EXPECT_FALSE(NEO::PinContext::init(mockGTPinFunctionName)); @@ -44,8 +42,7 @@ TEST(PinInitializationTest, GivenBadProcAddressPinContextInitFAILS) { TEST(PinInitializationTest, GivenBadPinHandlerPinContextInitFAILS) { uint32_t (*openPinHandler)(void *) = [](void *arg) -> uint32_t { return 1; }; - MockOsLibrary mockLibraryObject(reinterpret_cast(openPinHandler), false); - MockOsLibrary::loadLibraryNewObject = &mockLibraryObject; + MockOsLibrary::loadLibraryNewObject = new MockOsLibrary(reinterpret_cast(openPinHandler), false); NEO::PinContext::osLibraryLoadFunction = MockOsLibrary::load; std::string mockGTPinFunctionName{"aaa"}; EXPECT_FALSE(NEO::PinContext::init(mockGTPinFunctionName));