diff --git a/maestro/ofi.c b/maestro/ofi.c index f72d0ec20d05ee6730357d8c7bfaee2063179b29..b6d387b929b32f84c12151db2616d17a7d3ccef6 100644 --- a/maestro/ofi.c +++ b/maestro/ofi.c @@ -2522,6 +2522,11 @@ mstro_ofi__submit_component_descriptor_read(struct mstro_endpoint *my_ep, DEBUG("Checking for PM config block MR at (remote addr) 0x%" PRIx64 ", key of len %zu value %" PRIx64 "\n", mr_addr, inforeg->raw_key.len, mr_key); + if(sizeof(g_pm_component_descriptor) > my_ep->fi->ep_attr->max_msg_size) { + ERR("component descriptor size exceeds endpoint's max_msg_size. FIXME: should split up operation\n"); + + } + assert(ctx->msg==NULL); assert(my_ep->peer_info_mr!=NULL); /* incoming buffer has been registered at local endpoint set creation */ void * local_buf_mr_desc = fi_mr_desc(my_ep->peer_info_mr); diff --git a/transport/rdma.c b/transport/rdma.c index 1c2e244fa804690d3daa80eca386d6e4bcf1a393..dd1ad574dc59dbd9039094bbfea1fbb077b8776f 100644 --- a/transport/rdma.c +++ b/transport/rdma.c @@ -543,6 +543,12 @@ mstro_transport_rdma_dst_execute(mstro_cdo cdo_dst, Mstro__Pool__TransferTicket* ctx->ep = app_entry->ep; mstro_ofi__remember_ctx(app_entry->ep, ctx); + if(len> app_entry->ep->fi->ep_attr->max_msg_size) { + ERR("Transfer size exceeds endpoint's maximum operation size. FIXME: should split up operation\n"); + status=MSTRO_UNIMPL; + goto BAILOUT; + } + int num_retries = 3; RETRY_RDMA_TRANSPORT_READ: ;