Skip to content

Commit f77142d

Browse files
authored
Merge pull request #11170 from drwootton/memheap_invalid_access
Fix invalid access after free in do_recv: Coverity CID 1517308
2 parents 1456f84 + e8fec0a commit f77142d

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

oshmem/mca/memheap/base/memheap_base_mkey.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -227,15 +227,15 @@ static void do_recv(int source_pe, pmix_data_buffer_t* buffer)
227227
PMIx_Data_pack(NULL, msg, &msg_type, 1, PMIX_UINT8);
228228

229229
if (OSHMEM_SUCCESS != pack_local_mkeys(msg, source_pe, seg)) {
230-
OBJ_RELEASE(msg);
230+
PMIX_DATA_BUFFER_RELEASE(msg);
231231
goto send_fail;
232232
}
233233

234234
rc = send_buffer(source_pe, msg);
235+
PMIX_DATA_BUFFER_RELEASE(msg);
235236
if (MPI_SUCCESS != rc) {
236237
MEMHEAP_ERROR("FAILED to send rml message %d", rc);
237238
OMPI_ERROR_LOG(rc);
238-
OBJ_RELEASE(msg);
239239
goto send_fail;
240240
}
241241
break;
@@ -272,10 +272,10 @@ static void do_recv(int source_pe, pmix_data_buffer_t* buffer)
272272
PMIx_Data_pack(NULL, msg, &msg_type, 1, PMIX_UINT8);
273273

274274
rc = send_buffer(source_pe, msg);
275+
PMIX_DATA_BUFFER_RELEASE(msg);
275276
if (MPI_SUCCESS != rc) {
276277
MEMHEAP_ERROR("FAILED to send rml message %d", rc);
277278
OMPI_ERROR_LOG(rc);
278-
OBJ_RELEASE(msg);
279279
}
280280

281281
}
@@ -451,7 +451,6 @@ static int send_buffer(int pe, pmix_data_buffer_t *msg)
451451
PMIX_DATA_BUFFER_UNLOAD(msg, buffer, size);
452452
rc = PMPI_Send(buffer, size, MPI_BYTE, pe, 0, oshmem_comm_world);
453453
free(buffer);
454-
PMIX_DATA_BUFFER_RELEASE(msg);
455454

456455
MEMHEAP_VERBOSE(5, "message sent: dst=%d, rc=%d, %d bytes!", pe, rc, size);
457456
return rc;
@@ -494,6 +493,7 @@ static int memheap_oob_get_mkeys(shmem_ctx_t ctx, int pe, uint32_t seg, sshmem_m
494493
PMIx_Data_pack(NULL, msg, &seg, 1, PMIX_UINT32);
495494

496495
rc = send_buffer(pe, msg);
496+
PMIX_DATA_BUFFER_RELEASE(msg);
497497
if (MPI_SUCCESS != rc) {
498498
OPAL_THREAD_UNLOCK(&memheap_oob.lck);
499499
MEMHEAP_ERROR("FAILED to send rml message %d", rc);

0 commit comments

Comments
 (0)