Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
IPSEC: API coverity error of unitialised stat_index value
[vpp.git]
/
src
/
vppinfra
/
flowhash_template.h
diff --git
a/src/vppinfra/flowhash_template.h
b/src/vppinfra/flowhash_template.h
index
8f8fef2
..
d7a621c
100644
(file)
--- a/
src/vppinfra/flowhash_template.h
+++ b/
src/vppinfra/flowhash_template.h
@@
-357,7
+357,7
@@
static_always_inline
FVT(flowhash) *FV(flowhash_alloc)(u32 fixed_entries, u32 collision_buckets)
{
FVT(flowhash) *h;
FVT(flowhash) *FV(flowhash_alloc)(u32 fixed_entries, u32 collision_buckets)
{
FVT(flowhash) *h;
- u
32
size;
+ u
word
size;
void *mem;
u32 entries;
void *mem;
u32 entries;
@@
-374,6
+374,7
@@
FVT(flowhash) *FV(flowhash_alloc)(u32 fixed_entries, u32 collision_buckets)
/* Fill free elements list */
int i;
/* Fill free elements list */
int i;
+ clib_memset(h->entries, 0, sizeof(h->entries[0]) * entries);
for (i = 1; i <= collision_buckets; i++)
{
h->free_buckets_indices[-i] =
for (i = 1; i <= collision_buckets; i++)
{
h->free_buckets_indices[-i] =
@@
-525,9
+526,13
@@
FV(__flowhash_get_chained) (FVT(flowhash) *h, FVT(flowhash_lkey) *k,
}
static_always_inline void
}
static_always_inline void
-FV(flowhash_gc)(FVT(flowhash) *h, u32 time_now)
+FV(flowhash_gc)(FVT(flowhash) *h, u32 time_now,
+ u32 *freed_index, u32 *freed_len)
{
u32 ei;
{
u32 ei;
+ if (freed_index)
+ *freed_len = 0;
+
if (PREDICT_FALSE(h->collision_buckets_mask == (((u32)0) - 1)))
return;
if (PREDICT_FALSE(h->collision_buckets_mask == (((u32)0) - 1)))
return;
@@
-565,6
+570,12
@@
FV(flowhash_gc)(FVT(flowhash) *h, u32 time_now)
if (!found)
{
if (!found)
{
+ /* Tell caller we freed this */
+ if (freed_index)
+ {
+ *freed_index = ei;
+ *freed_len = FLOWHASH_ENTRIES_PER_BUCKETS;
+ }
/* The bucket is not used. Let's free it. */
h->free_buckets_position--;
/* Reset forward link */
/* The bucket is not used. Let's free it. */
h->free_buckets_position--;
/* Reset forward link */