@@ -58,14 +58,19 @@ umf_result_t umfGetIPCHandle(const void *ptr, umf_ipc_handle_t *umfIPCHandle,
5858 }
5959
6060 size_t ipcHandleSize = 0 ;
61- umf_alloc_info_t allocInfo ;
62- umf_result_t ret = umfMemoryTrackerGetAllocInfo (ptr , & allocInfo );
61+ umf_memory_properties_handle_t props = NULL ;
62+ umf_result_t ret = umfGetMemoryPropertiesHandle (ptr , & props );
6363 if (ret != UMF_RESULT_SUCCESS ) {
64- LOG_ERR ("cannot get alloc info for ptr = %p." , ptr );
64+ LOG_ERR ("cannot get alloc props for ptr = %p." , ptr );
6565 return ret ;
6666 }
6767
68- ret = umfPoolGetIPCHandleSize (allocInfo .pool , & ipcHandleSize );
68+ if (props == NULL || props -> pool == NULL ) {
69+ LOG_ERR ("cannot get pool from alloc info for ptr = %p." , ptr );
70+ return UMF_RESULT_ERROR_UNKNOWN ;
71+ }
72+
73+ ret = umfPoolGetIPCHandleSize (props -> pool , & ipcHandleSize );
6974 if (ret != UMF_RESULT_SUCCESS ) {
7075 LOG_ERR ("cannot get IPC handle size." );
7176 return ret ;
@@ -79,11 +84,14 @@ umf_result_t umfGetIPCHandle(const void *ptr, umf_ipc_handle_t *umfIPCHandle,
7984
8085 // We cannot use umfPoolGetMemoryProvider function because it returns
8186 // upstream provider but we need tracking one
82- umf_memory_provider_handle_t provider = allocInfo .pool -> provider ;
83- assert (provider );
87+ if (props -> pool -> provider == NULL ) {
88+ LOG_ERR ("cannot get memory provider from pool" );
89+ umf_ba_global_free (ipcData );
90+ return UMF_RESULT_ERROR_UNKNOWN ;
91+ }
92+ umf_memory_provider_handle_t provider = props -> pool -> provider ;
8493
85- ret = umfMemoryProviderGetIPCHandle (provider , allocInfo .base ,
86- allocInfo .baseSize ,
94+ ret = umfMemoryProviderGetIPCHandle (provider , props -> base , props -> base_size ,
8795 (void * )ipcData -> providerIpcData );
8896 if (ret != UMF_RESULT_SUCCESS ) {
8997 LOG_ERR ("failed to get IPC handle." );
@@ -92,10 +100,10 @@ umf_result_t umfGetIPCHandle(const void *ptr, umf_ipc_handle_t *umfIPCHandle,
92100 }
93101
94102 // ipcData->handle_id is filled by tracking provider
95- ipcData -> base = allocInfo . base ;
103+ ipcData -> base = props -> base ;
96104 ipcData -> pid = utils_getpid ();
97- ipcData -> baseSize = allocInfo . baseSize ;
98- ipcData -> offset = (uintptr_t )ptr - (uintptr_t )allocInfo . base ;
105+ ipcData -> baseSize = props -> base_size ;
106+ ipcData -> offset = (uintptr_t )ptr - (uintptr_t )props -> base ;
99107
100108 * umfIPCHandle = ipcData ;
101109 * size = ipcHandleSize ;
0 commit comments