From 95e19253320ab07748787f4c8a7620704563f6b8 Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Tue, 7 Apr 2020 10:52:43 -0400 Subject: l2: handle complete clone fail in l2_flood vlib_buffer_clone(...) may not manage to produce any buffer clones at all. vlib_buffer_clone_256 should not smash the original buffer reference count if no clones are produced. Type: fix Signed-off-by: Dave Barach Change-Id: I14d9d53637a220485c7a0036cfc75a4149b264ea --- src/vlib/buffer_funcs.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/vlib') diff --git a/src/vlib/buffer_funcs.h b/src/vlib/buffer_funcs.h index 7103227a965..98ee2055833 100644 --- a/src/vlib/buffer_funcs.h +++ b/src/vlib/buffer_funcs.h @@ -1208,11 +1208,11 @@ vlib_buffer_clone_256 (vlib_main_t * vm, u32 src_buffer, u32 * buffers, d->next_buffer = src_buffer; } vlib_buffer_advance (s, head_end_offset); - s->ref_count = n_buffers; + s->ref_count = n_buffers ? n_buffers : s->ref_count; while (s->flags & VLIB_BUFFER_NEXT_PRESENT) { s = vlib_get_buffer (vm, s->next_buffer); - s->ref_count = n_buffers; + s->ref_count = n_buffers ? n_buffers : s->ref_count; } return n_buffers; -- cgit 1.2.3-korg