while (c)
{
+ CLIB_MEM_UNPOISON (c, sizeof (*c));
next = c->next;
fl_index = fs_freelist_for_size (c->length);
c->next = fss->free_chunks[fl_index];
c = c->next;
while ((to_copy -= n_chunk))
{
+ CLIB_MEM_UNPOISON (c, sizeof (*c));
+ CLIB_MEM_UNPOISON (c->data, c->length);
n_chunk = clib_min (c->length, to_copy);
clib_memcpy_fast (dst + (len - to_copy), &c->data[0], n_chunk);
c = c->length <= to_copy ? c->next : c;
len = clib_min (cursize - offset, len);
head_idx = head + offset;
+ CLIB_MEM_UNPOISON (f->ooo_deq, sizeof (*f->ooo_deq));
if (!f->ooo_deq || !f_chunk_includes_pos (f->ooo_deq, head_idx))
f_update_ooo_deq (f, head_idx, head_idx + len);
if ((rv = ssvm_server_init_memfd (memfd)))
goto reply;
+ /* delete the unused heap created in ssvm_server_init_memfd and mark it
+ * accessible again for ASAN */
+ clib_mem_destroy_heap (memfd->sh->heap);
+ CLIB_MEM_UNPOISON ((void *) memfd->sh->ssvm_va, memfd->ssvm_size);
+
/* Remember to close this fd when the socket connection goes away */
vec_add1 (regp->additional_fds_to_close, memfd->fd);