Skip to content

Commit

Permalink
Merge pull request #4663 from hjelmn/v3.0.x_4509
Browse files Browse the repository at this point in the history
v3.0.x: rcache/grdma: fix crash when part of a registration is unmapped
  • Loading branch information
hppritcha authored Jan 5, 2018
2 parents fb2b257 + aaf380a commit 39f3d68
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions opal/mca/rcache/grdma/rcache_grdma_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,11 @@ static int mca_rcache_grdma_deregister (mca_rcache_base_module_t *rcache,
return OPAL_SUCCESS;
}

rc = dereg_mem (reg);
if (!(reg->flags & MCA_RCACHE_FLAGS_INVALID)) {
/* only call dereg mem if this registration is not in the GC lifo */
rc = dereg_mem (reg);
}

opal_mutex_unlock (&rcache_grdma->cache->vma_module->vma_lock);

return rc;
Expand Down Expand Up @@ -451,7 +455,7 @@ static int gc_add (mca_rcache_base_registration_t *grdma_reg, void *ctx)
/* This may be called from free() so avoid recursively calling into free by just
* shifting this registration into the garbage collection list. The cleanup will
* be done on the next registration attempt. */
if (registration_is_cacheable (grdma_reg)) {
if (registration_is_cacheable (grdma_reg) && !grdma_reg->ref_count) {
opal_list_remove_item (&rcache_grdma->cache->lru_list, (opal_list_item_t *) grdma_reg);
}

Expand Down

0 comments on commit 39f3d68

Please sign in to comment.