diff --git a/ompi/mca/osc/sm/osc_sm_active_target.c b/ompi/mca/osc/sm/osc_sm_active_target.c index e78364a9b82..672850be996 100644 --- a/ompi/mca/osc/sm/osc_sm_active_target.c +++ b/ompi/mca/osc/sm/osc_sm_active_target.c @@ -150,7 +150,7 @@ ompi_osc_sm_start(struct ompi_group_t *group, for (int i = 0 ; i < size ; ++i) { int rank_byte = ranks[i] >> 6; - uint64_t old, rank_bit = 1 << (ranks[i] & 0x3f); + uint64_t old, rank_bit = ((uint64_t) 1) << (ranks[i] & 0x3f); /* wait for rank to post */ while (!(module->posts[my_rank][rank_byte] & rank_bit)) { @@ -219,7 +219,7 @@ ompi_osc_sm_post(struct ompi_group_t *group, (ompi_osc_sm_module_t*) win->w_osc_module; int my_rank = ompi_comm_rank (module->comm); int my_byte = my_rank >> 6; - uint64_t my_bit = 1 << (my_rank & 0x3f); + uint64_t my_bit = ((uint64_t) 1) << (my_rank & 0x3f); int gsize; OPAL_THREAD_LOCK(&module->lock); diff --git a/ompi/mca/osc/sm/osc_sm_component.c b/ompi/mca/osc/sm/osc_sm_component.c index 28d76217b70..2e2948e7a2d 100644 --- a/ompi/mca/osc/sm/osc_sm_component.c +++ b/ompi/mca/osc/sm/osc_sm_component.c @@ -477,10 +477,11 @@ ompi_osc_sm_free(struct ompi_win_t *win) /* cleanup */ ompi_comm_free(&module->comm); - free(module); OBJ_DESTRUCT(&module->lock); + free(module); + return OMPI_SUCCESS; }