svm: null instead of panic if fifo hdr alloc fails 28/26728/4
authorFlorin Coras <fcoras@cisco.com>
Mon, 27 Apr 2020 22:41:39 +0000 (22:41 +0000)
committerDave Barach <openvpp@barachs.net>
Tue, 28 Apr 2020 00:56:19 +0000 (00:56 +0000)
Type: fix

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I2c5c9e3e7eff8481e48a940e8420d236a16e7649

src/svm/fifo_segment.c

index 06b7f06..d9ca3a2 100644 (file)
@@ -420,8 +420,11 @@ fs_try_alloc_fifo_freelist_multi_chunk (fifo_segment_header_t * fsh,
   f = fss->free_fifos;
   if (!f)
     {
+      if (PREDICT_FALSE (fsh_n_free_bytes (fsh) < sizeof (svm_fifo_t)))
+       return 0;
+
       void *oldheap = ssvm_push_heap (fsh->ssvm_sh);
-      f = clib_mem_alloc_aligned (sizeof (*f), CLIB_CACHE_LINE_BYTES);
+      f = clib_mem_alloc_aligned_or_null (sizeof (*f), CLIB_CACHE_LINE_BYTES);
       ssvm_pop_heap (oldheap);
       if (!f)
        return 0;