X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fsvm%2Fsvm.c;h=d958c8378e5388c717a8a8a2a36e1a4b60536ec6;hb=dab732a;hp=afba54e74fcf8377ed7f2a81111993587fb8d2c3;hpb=ada24ea7012448b75d57ab87a6b7796c55bc44f5;p=vpp.git diff --git a/src/svm/svm.c b/src/svm/svm.c index afba54e74fc..d958c8378e5 100644 --- a/src/svm/svm.c +++ b/src/svm/svm.c @@ -339,9 +339,13 @@ svm_data_region_create (svm_map_region_args_t * a, svm_region_t * rp) if (a->flags & SVM_FLAGS_MHEAP) { + mheap_t *heap_header; rp->data_heap = mheap_alloc_with_flags ((void *) (rp->data_base), map_size, MHEAP_FLAG_DISABLE_VM); + heap_header = mheap_header (rp->data_heap); + heap_header->flags |= MHEAP_FLAG_THREAD_SAFE; + rp->flags |= SVM_FLAGS_MHEAP; } return 0; @@ -652,6 +656,10 @@ svm_map_region (svm_map_region_args_t * a) return (0); } + /* Reset ownership in case the client started first */ + if (fchown (svm_fd, a->uid, a->gid) < 0) + clib_unix_warning ("segment chown [ok if client starts first]"); + time_left = 20; while (1) {