diff --git a/src/mca/bmi/sm/bmi_sm_component.c b/src/mca/bmi/sm/bmi_sm_component.c index 14df1f314d..48dece1e8b 100644 --- a/src/mca/bmi/sm/bmi_sm_component.c +++ b/src/mca/bmi/sm/bmi_sm_component.c @@ -372,6 +372,10 @@ int mca_bmi_sm_component_progress(void) case MCA_BMI_SM_FRAG_ACK: { /* completion callback */ + frag->base.des_src = frag->base.des_dst; + frag->base.des_src_cnt = frag->base.des_dst_cnt; + frag->base.des_dst = NULL; + frag->base.des_dst_cnt = 0; frag->base.des_cbfunc(&mca_bmi_sm[0].super, frag->endpoint, &frag->base, frag->rc); break; } @@ -379,6 +383,10 @@ int mca_bmi_sm_component_progress(void) { /* recv upcall */ mca_bmi_sm_registration_t* reg = mca_bmi_sm[0].sm_reg + frag->tag; + frag->base.des_dst = frag->base.des_src; + frag->base.des_dst_cnt = frag->base.des_src_cnt; + frag->base.des_src = NULL; + frag->base.des_src_cnt = 0; reg->cbfunc(&mca_bmi_sm[0].super,frag->tag,&frag->base,reg->cbdata); frag->type = MCA_BMI_SM_FRAG_ACK; MCA_BMI_SM_FIFO_WRITE(my_smp_rank,peer_smp_rank,frag,rc);