1
1

free memory correctly in case of an error. Fixes CID 131540 and CID 1315419

Этот коммит содержится в:
Edgar Gabriel 2015-08-07 13:30:50 -05:00
родитель 0aa3049bfc
Коммит 1293d9c69b
3 изменённых файлов: 30 добавлений и 0 удалений

Просмотреть файл

@ -60,6 +60,7 @@ int mca_sharedfp_individual_file_open (struct ompi_communicator_t *comm,
if ( NULL == sh ){ if ( NULL == sh ){
opal_output(0, "mca_sharedfp_individual_file_open: Error, unable to malloc " opal_output(0, "mca_sharedfp_individual_file_open: Error, unable to malloc "
"f_sharedfp_ptr struct\n"); "f_sharedfp_ptr struct\n");
free (shfileHandle );
return OMPI_ERR_OUT_OF_RESOURCE; return OMPI_ERR_OUT_OF_RESOURCE;
} }
@ -94,6 +95,8 @@ int mca_sharedfp_individual_file_open (struct ompi_communicator_t *comm,
MPI_INFO_NULL, datafilehandle, false); MPI_INFO_NULL, datafilehandle, false);
if ( OMPI_SUCCESS != err) { if ( OMPI_SUCCESS != err) {
opal_output(0, "mca_sharedfp_individual_file_open: Error during datafile file open\n"); opal_output(0, "mca_sharedfp_individual_file_open: Error during datafile file open\n");
free (shfileHandle );
free (sh);
return err; return err;
} }
@ -107,14 +110,31 @@ int mca_sharedfp_individual_file_open (struct ompi_communicator_t *comm,
/* metadata filename created by appending .metadata.$rank to the original filename*/ /* metadata filename created by appending .metadata.$rank to the original filename*/
metadatafilename = (char*) malloc ( len ); metadatafilename = (char*) malloc ( len );
if ( NULL == metadatafilename ) {
free (shfileHandle );
free (sh);
opal_output(0, "mca_sharedfp_individual_file_open: Error during memory allocation\n");
return OMPI_ERR_OUT_OF_RESOURCE;
}
snprintf ( metadatafilename, len, "%s%s%d", filename, ".metadata.",rank); snprintf ( metadatafilename, len, "%s%s%d", filename, ".metadata.",rank);
metadatafilehandle = (mca_io_ompio_file_t *)malloc(sizeof(mca_io_ompio_file_t)); metadatafilehandle = (mca_io_ompio_file_t *)malloc(sizeof(mca_io_ompio_file_t));
if ( NULL == metadatafilehandle ) {
free (shfileHandle );
free (sh);
free (metadatafilename);
opal_output(0, "mca_sharedfp_individual_file_open: Error during memory allocation\n");
return OMPI_ERR_OUT_OF_RESOURCE;
}
err = ompio_io_ompio_file_open ( MPI_COMM_SELF,metadatafilename, err = ompio_io_ompio_file_open ( MPI_COMM_SELF,metadatafilename,
MPI_MODE_RDWR | MPI_MODE_CREATE | MPI_MODE_DELETE_ON_CLOSE, MPI_MODE_RDWR | MPI_MODE_CREATE | MPI_MODE_DELETE_ON_CLOSE,
MPI_INFO_NULL, metadatafilehandle, false); MPI_INFO_NULL, metadatafilehandle, false);
if ( OMPI_SUCCESS != err) { if ( OMPI_SUCCESS != err) {
opal_output(0, "mca_sharedfp_individual_file_open: Error during metadatafile file open\n"); opal_output(0, "mca_sharedfp_individual_file_open: Error during metadatafile file open\n");
free (shfileHandle );
free (sh);
free (metadatafilename);
free (metadatafilehandle);
return err; return err;
} }

Просмотреть файл

@ -61,6 +61,7 @@ int mca_sharedfp_lockedfile_file_open (struct ompi_communicator_t *comm,
sh = (struct mca_sharedfp_base_data_t*)malloc(sizeof(struct mca_sharedfp_base_data_t)); sh = (struct mca_sharedfp_base_data_t*)malloc(sizeof(struct mca_sharedfp_base_data_t));
if ( NULL == sh){ if ( NULL == sh){
opal_output(0, "mca_sharedfp_lockedfile_file_open: Error, unable to malloc f_sharedfp_ptr struct\n"); opal_output(0, "mca_sharedfp_lockedfile_file_open: Error, unable to malloc f_sharedfp_ptr struct\n");
free ( shfileHandle);
return OMPI_ERR_OUT_OF_RESOURCE; return OMPI_ERR_OUT_OF_RESOURCE;
} }
/*Populate the sh file structure based on the implementation*/ /*Populate the sh file structure based on the implementation*/
@ -80,6 +81,8 @@ int mca_sharedfp_lockedfile_file_open (struct ompi_communicator_t *comm,
module_data = (struct mca_sharedfp_lockedfile_data*)malloc(sizeof(struct mca_sharedfp_lockedfile_data)); module_data = (struct mca_sharedfp_lockedfile_data*)malloc(sizeof(struct mca_sharedfp_lockedfile_data));
if ( NULL == module_data ) { if ( NULL == module_data ) {
printf("mca_sharedfp_lockedfile_file_open: Error, unable to malloc lockedfile_data struct\n"); printf("mca_sharedfp_lockedfile_file_open: Error, unable to malloc lockedfile_data struct\n");
free (shfileHandle);
free (sh);
return OMPI_ERR_OUT_OF_RESOURCE; return OMPI_ERR_OUT_OF_RESOURCE;
} }
@ -104,6 +107,8 @@ int mca_sharedfp_lockedfile_file_open (struct ompi_communicator_t *comm,
handle = open ( lockedfilename, O_RDWR, 0644 ); handle = open ( lockedfilename, O_RDWR, 0644 );
if ( -1 == handle ) { if ( -1 == handle ) {
printf("[%d]mca_sharedfp_lockedfile_file_open: Error during file open\n", rank); printf("[%d]mca_sharedfp_lockedfile_file_open: Error during file open\n", rank);
free (shfileHandle);
free (sh);
free(module_data); free(module_data);
return OMPI_ERROR; return OMPI_ERROR;
} }

Просмотреть файл

@ -64,9 +64,14 @@ int mca_sharedfp_sm_file_open (struct ompi_communicator_t *comm,
/*Open the same file again without shared file pointer*/ /*Open the same file again without shared file pointer*/
/*----------------------------------------------------*/ /*----------------------------------------------------*/
shfileHandle = (mca_io_ompio_file_t *)malloc(sizeof(mca_io_ompio_file_t)); shfileHandle = (mca_io_ompio_file_t *)malloc(sizeof(mca_io_ompio_file_t));
if ( NULL == shfileHandle ) {
opal_output(0, "mca_sharedfp_sm_file_open: Error during memory allocation\n");
return OMPI_ERR_OUT_OF_RESOURCE;
}
err = ompio_io_ompio_file_open(comm,filename,amode,info,shfileHandle,false); err = ompio_io_ompio_file_open(comm,filename,amode,info,shfileHandle,false);
if ( OMPI_SUCCESS != err) { if ( OMPI_SUCCESS != err) {
opal_output(0, "mca_sharedfp_sm_file_open: Error during file open\n"); opal_output(0, "mca_sharedfp_sm_file_open: Error during file open\n");
free (shfileHandle);
return err; return err;
} }
shfileHandle->f_fh = fh->f_fh; shfileHandle->f_fh = fh->f_fh;